Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: re[eclipselink-users] ading entities as other writes to the database happen

Using serializable transactions is one option.  The main issue with
serializable transactions is they are database dependent and everything read
in the transaction will be locked, and can cause deadlocks in certain cases. 
But depending on your database this may be the best solution.

Another option is using pessimistic locking through "Select ... for Update",
this is supported through the "eclipseLink.pessimistic-lock" query hint. 
This gives you more control over what is locked, but is still database
dependent, and not part of the JPA spec yet.

You can also use optimistic locking read-locking.  JPA has a lock() API on
EntityManager that allows the object's version locked to be check even if
just read.  This may be the best solution, as it is supported by the JPA
spec, and less database dependent and less prone to deadlocks.

Also see:
http://en.wikibooks.org/wiki/Java_Persistence/Locking#Pessimistic_Locking
for more info on locking.


ageing student wrote:
> 
> I'm using 
> 
> OC4J as my server
> Eclipselink as my jpa provider
> Spring to inject the container managed entity manager and the JTA
> transactions.
> 
> I think that using the serializable isolation level on the transaction
> would achieve our requirements.
> 
> Richard
> 
> 
> ageing student wrote:
>> 
>> Hi,
>> 
>> I have a requirement to read several unrelated entities. The relative
>> state of the loaded entities should be as at a specific point in time
>> i.e. the start of the read operation. Meanwhile other servers may be
>> writing to the database and I don't wish to include any writes that occur
>> after the read transaction has started. 
>> 
>> So if I want to load entities A and B, but whilst I'm loading entity A
>> someone else writes an update to entity B, when I move on to load entity
>> B I wish to load the data prior to the update.
>> 
>> 
>> 
>> I think that using isolation levels is the way to go but am unclear on
>> their use.
>> 
> 
> 


-----
---
http://wiki.eclipse.org/User:James.sutherland.oracle.com James Sutherland 
http://www.eclipse.org/eclipselink/
 EclipseLink ,  http://www.oracle.com/technology/products/ias/toplink/
TopLink 
Wiki:  http://wiki.eclipse.org/EclipseLink EclipseLink , 
http://wiki.oracle.com/page/TopLink TopLink 
Forums:  http://forums.oracle.com/forums/forum.jspa?forumID=48 TopLink , 
http://www.nabble.com/EclipseLink-f26430.html EclipseLink 
Book:  http://en.wikibooks.org/wiki/Java_Persistence Java Persistence 
-- 
View this message in context: http://www.nabble.com/reading-entities-as-other-writes-to-the-database-happen-tp18212771p18449053.html
Sent from the EclipseLink - Users mailing list archive at Nabble.com.



Back to the top