Re: Persistence Strategies [Was: Open source WO - offer]

Andrus Adamchik <[email protected]> Thu, 7 Sep 2006 10:47:13 +0400
Newsgroups gmane.comp.web.webobjects.general
Message-ID <[email protected]>
On Sep 6, 2006, at 4:37 AM, Lenny Marks wrote:
>>> I'm not too familiar with Cayenne. We checked it out about a year  
>>> ago, but thought it might be a little too much like EOF
>>
>> Not in the threading part ;-)
>
> Is Cayenne similar in architecture with something that looks like  
> an EOF stack(Object store hierarchy)? If so, do developers have to  
> manage locking/unlocking it like in EOF. Bottom line, can more than  
> one request do database access without blocking others(by default)?

There is still a shared piece in the stack that we need to  
synchronize upon. But the synchronized block does not wrap any DB  
interaction or object creation, only the cache update which takes a  
fraction of time of each user operation. Also developers do not have  
to manage any locks.


>>> and at the time did not support POJO's which have been of  
>>> substantial benefit. I'd be interested to here comments if  
>>> Cayenne addresses some of these issues.
>>
>> DataObjects (and more so Persistent objects used in the remote  
>> layer) are POJO's, except for the framework callbacks in the set/ 
>> get methods. We just need to replace them with runtime class  
>> enhancement (we still want lazy faulting and automatic reverse  
>> relationship connection/disconnection, don't we?).
>
> Lazy faulting is definitely a good thing . Not sure what you mean  
> exactly by reverse relationship connection/disconnection. If that  
> means persistence by reachability, then also a good thing.

No it actually means functionality like  
addObjectToBothSidesOfRelationshipWithKey, only as a part of set*  
method. In other words - object graph consistency is guaranteed by  
the framework.

> One note about the runtime class enhancement. This is one of those  
> complaints I have about Hibernate. It may just go with the  
> territory, but the runtime class enhancement adds a substantial  
> amount of startup time which hurts developer productivity.

I've heard about slow startup times of Hibernate. Not sure why they  
can't address it, but as for the general class enhancement issue  
(regardless of the specific implementation) - POJO can only go that  
far in the ORM world, you have to have some ugly tricks in the  
backend to make them persistent.

Andrus