Go to most recent revision |
View as "text/plain" |
Blame |
Last modification |
View Log
| RSS feed
1
//$Id: LockModeType.java 11282 2007-03-14 22:05:59Z epbernard $
package javax.persistence;
/**
* Lock modes that can be specified by means of the EntityManager.lock() method.
*
* The semantics of requesting locks of type LockModeType.READ and LockModeType.WRITE are t
* he following.
*
* If transaction T1 calls lock(entity, LockModeType.READ) on a versioned object, the entity
* manager must ensure that neither of the following phenomena can occur:
*
* * P1 (Dirty read): Transaction T1 modifies a row. Another transaction T2 then reads
* that row and obtains the modified value, before T1 has committed or rolled back.
* Transaction T2 eventually commits successfully; it does not matter whether T1 commits or rolls
* back and whether it does so before or after T2 commits.
*
* * P2 (Non-repeatable read): Transaction T1 reads a row. Another transaction T2 then modifies
* or deletes that row, before T1 has committed. Both transactions eventually commit successfully.
*
* Lock modes must always prevent the phenomena P1 and P2.
* In addition, calling lock(entity, LockModeType.WRITE) on a versioned object,
* will also force an update (increment) to the entity's version column.
*
* The persistence implementation is not required to support calling EntityManager.lock()
* on a non-versioned object. When it cannot support a such lock call, it must
* throw the PersistenceException.
*
* @author Emmanuel Bernard
*/
public enum LockModeType {
/**
* Read lock
*/
READ,
/**
* Write lock
*/
WRITE
}