Great to hear, I'm just happy I wasn't completely mis-understandning
something.

One thing to add is that the conveniences you propose could still be
implemented without conflict, the same way cf9 is doing it with hibernate.
They give you the option of making your app object-centric and managed by
hibernate through cfproperty annotations, but you can still always run
straight queries if you don't care about that.

Baz



On Fri, Jun 5, 2009 at 1:00 PM, Vince Bonfanti <[email protected]> wrote:

> Hmmm...very good points. You've given me something to ponder--I can
> definitely see the merits of supporting a data-oriented mechanism as you
> describe.
>
> One point to add: the GAE datastore isn't really like a relational database
> at all--it's much less strictly organized. It's more like a "bag of CFML
> structs" where there's no requirement that the structs contain the same
> keys, but are grouped (arbitrarily, perhaps) into "kinds." If you look at
> the definition of an Entity it's basically the same as a CFML struct (or a
> Java Map) with "getProperty", "setProperty", and "removeProperty" methods:
>
>
> http://code.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Entity.html
>
> So from CFML perspective, I think the basic unit of data you could put into
> the GAE datastore is a struct.
>
> Anyway, let me think this over a bit more.
>
> Vince
> On Fri, Jun 5, 2009 at 3:35 PM, Baz <[email protected]> wrote:
>
>> I don't have issue with the serialization, as you said, that's only an
>> implementation detail. What I want to know, is why the question is about
>> saving/restoring *CFC's* and not *DATA*? If I deploy OpenBD on AWS, there
>> is no cfc persistence or built-in ORM, there is only straight 
>> *data*persistence. If I deploy OpenBD to my home server, again there is only
>> *data* persistence. Why the paradigm shift just for GAE? The problems
>> that are being solved are the same for any OpenBD flavor, so why not
>> implement it across the board in that case?
>>
>> The GAE datastore is very similar to a relational db, the only significant
>> difference being that it has the concept of multiple values for a property
>> and therefore additional/different sql functions. But that characteristic
>> does not necessarily suggest that we need to bring cfc's into the mix.
>>
>> This following code is the heart and essence of CF:
>>
>> <cfquery dbtype="google" name="Visitors">
>> SELECT FROM Visitor
>> </cfquery>
>> <cfoutput query="Visitors">
>> #Visitor.IP#
>> </cfoutput>
>>
>> Why dismiss it so quickly? Lots of people don't care to have everything in
>> an object. And if they do, well they can just do what they always do:
>>
>> VisitorObject = new('Visitor');
>> VisitorObject.setIP(VisitorQuery.IP);
>>
>> And to save that visitor they would just do:
>>
>> GoogleWrite('Visitor', VisitorStruct);
>>
>> Or:
>>
>> GoogleWrite('Visitor, { IP=localhost, Name=Baz });
>>
>> Or perhaps a special UPDATE statement that openbd translates to
>> googlewrite:
>>
>> <cfquery dbtype="google" name="Visitors">
>> UPDATE Visitor
>> SET IP='localhost'
>> </cfquery>
>>
>> If they they wanted an entirely object-oriented app without worrying about
>> CRUD, they could just harass Mark Mandel to write a GAE Transfer that I'm
>> sure would be very neat and fabulous :)
>>
>> The question is why force someone down that route, and change the paradigm
>> so significantly, when they can choose to do it themselves if they wanted
>> to? What am I missing here?
>>
>> I see your update to the thread now:
>>
>> "Only persist those variables that you (the CFML developer) specifically
>>> declare to be persistable, via CFPROPERTY or some other annotation
>>> mechanism. Searching can be done on any persistable variable that is a
>>> simple type (string, number, boolean, date). When you read a CFC from the
>>> datastore, create a new CFC instance and populate it with the persisted
>>> variables."
>>>
>>
>> This is getting even closer to what I am saying. If the data is coming
>> back in raw form, why don't you just give it back to me like that instead of
>> adding additional processing to "create a new CFC instance and populate it
>> with the persisted variables"? What if I don't want a cfc and the extra
>> overhead of creating it.
>>
>> Baz
>>
>>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Open BlueDragon Public Mailing List
 http://groups.google.com/group/openbd?hl=en
 official site @ http://www.openbluedragon.org/

!! save a network - trim replies before posting !!
-~----------~----~----~----~------~----~------~--~---

Reply via email to