openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Dain Sundstrom <d...@iq80.com>
Subject Re: RE: Instances and transactions...
Date Wed, 13 Dec 2006 02:48:08 GMT
Sorry about he subject free email :)

On Dec 12, 2006, at 6:42 PM, Patrick Linskey wrote:

>> On Dec 12, 2006, at 6:24 PM, Dain Sundstrom wrote:
>>
>>> Does JPA guarantee that only one bean will be activated for a
>>> specific pk per transaction?
>>
>> Yes.
>>
>>> Specifically, will OpenJPA ever create more that one bean for a
>>> specific Class:PK in a single transaction?
>>
>> No.
>
> The full story is a little bit more complicated with OpenJPA. JPA  
> guarantees
> that object equality (==) comparison must pass for two references  
> that point
> to the same database record in the same transaction. IOW, however you
> navigate to / query for a given record, you'll get back a reference  
> to the
> same Java object in a given transaction.
>
> The complication is that in most circumstances, OpenJPA holds weak
> references to all objects except ones with unflushed modifications.  
> The
> guarantee I outlined above still holds, since if you hold a  
> reference to an
> instance, our weak reference will be maintained as well, and  
> equality tests
> will pass. But if you release your reference, the instance may become
> garbage-collected, so if you later query for / navigate to the  
> instance, you
> might end up with a different object reference.
>
> I bring all this up because it means that OpenJPA does not  
> guarantee that
> the return value of System.identityHashCode() will be the same for  
> a given
> record over the course of a transaction. So, be sure that you bear  
> this
> restriction in mind if you use an IdentityHashMap or some equivalent
> structure.

Very cool.

-dain

Mime
View raw message