Top Description Fields Constructors Methods
javax.persistence

public final Enum LockModeType

extends Enum<LockModeType>
Class Inheritance

Lock modes can be specified by means of passing a LockModeType argument to one of the javax.persistence.EntityManager methods that take locks (lock, find, or refresh) or to the Query.setLockMode() or TypedQuery.setLockMode() method.

Lock modes can be used to specify either optimistic or pessimistic locks.

Optimistic locks are specified using LockModeType.OPTIMISTIC and LockModeType.OPTIMISTIC_FORCE_INCREMENT. The lock mode type values LockModeType.READ and LockModeType.WRITE are synonyms of OPTIMISTIC and OPTIMISTIC_FORCE_INCREMENT respectively. The latter are to be preferred for new applications.

The semantics of requesting locks of type LockModeType.OPTIMISTIC and LockModeType.OPTIMISTIC_FORCE_INCREMENT are the following.

If transaction T1 calls for a lock of type LockModeType.OPTIMISTIC on a versioned object, the entity manager must ensure that neither of the following phenomena can occur:

Lock modes must always prevent the phenomena P1 and P2.

In addition, calling a lock of type LockModeType.OPTIMISTIC_FORCE_INCREMENT on a versioned object, will also force an update (increment) to the entity's version column.

The persistence implementation is not required to support the use of optimistic lock modes on non-versioned objects. When it cannot support a such lock call, it must throw the PersistenceException.

The lock modes LockModeType.PESSIMISTIC_READ, LockModeType.PESSIMISTIC_WRITE, and LockModeType.PESSIMISTIC_FORCE_INCREMENT are used to immediately obtain long-term database locks.

The semantics of requesting locks of type LockModeType.PESSIMISTIC_READ, LockModeType.PESSIMISTIC_WRITE, and LockModeType.PESSIMISTIC_FORCE_INCREMENT are the following.

If transaction T1 calls for a lock of type LockModeType.PESSIMISTIC_READ or LockModeType.PESSIMISTIC_WRITE on an object, the entity manager must ensure that neither of the following phenomena can occur:

A lock with LockModeType.PESSIMISTIC_WRITE can be obtained on an entity instance to force serialization among transactions attempting to update the entity data. A lock with LockModeType.PESSIMISTIC_READ can be used to query data using repeatable-read semantics without the need to reread the data at the end of the transaction to obtain a lock, and without blocking other transactions reading the data. A lock with LockModeType.PESSIMISTIC_WRITE can be used when querying data and there is a high likelihood of deadlock or update failure among concurrent updating transactions.

The persistence implementation must support use of locks of type LockModeType.PESSIMISTIC_READ LockModeType.PESSIMISTIC_WRITE on a non-versioned entity as well as on a versioned entity.

When the lock cannot be obtained, and the database locking failure results in transaction-level rollback, the provider must throw the PessimisticLockException and ensure that the JTA transaction or EntityTransaction has been marked for rollback.

When the lock cannot be obtained, and the database locking failure results in only statement-level rollback, the provider must throw the LockTimeoutException (and must not mark the transaction for rollback).

Since
Java Persistence 1.0

Field Summary

Modifier and TypeField and Description
public static final LockModeType
NONE

No lock.

public static final LockModeType
OPTIMISTIC

Optimistic lock.

public static final LockModeType
OPTIMISTIC_FORCE_INCREMENT

Optimistic lock, with version update.

public static final LockModeType
PESSIMISTIC_FORCE_INCREMENT

Pessimistic write lock, with version update.

public static final LockModeType
PESSIMISTIC_READ

Pessimistic read lock.

public static final LockModeType
PESSIMISTIC_WRITE

Pessimistic write lock.

public static final LockModeType
READ

Synonymous with OPTIMISTIC.

public static final LockModeType
WRITE

Synonymous with OPTIMISTIC_FORCE_INCREMENT.

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public static LockModeType
public static LockModeType[]
Inherited from java.lang.Enum:
clonecompareTodescribeConstableequalsfinalizegetDeclaringClasshashCodenameordinaltoStringvalueOf

Field Detail

NONEback to summary
public static final LockModeType NONE

No lock.

Since
Java Persistence 2.0
OPTIMISTICback to summary
public static final LockModeType OPTIMISTIC

Optimistic lock.

Since
Java Persistence 2.0
OPTIMISTIC_FORCE_INCREMENTback to summary
public static final LockModeType OPTIMISTIC_FORCE_INCREMENT

Optimistic lock, with version update.

Since
Java Persistence 2.0
PESSIMISTIC_FORCE_INCREMENTback to summary
public static final LockModeType PESSIMISTIC_FORCE_INCREMENT

Pessimistic write lock, with version update.

Since
Java Persistence 2.0
PESSIMISTIC_READback to summary
public static final LockModeType PESSIMISTIC_READ

Pessimistic read lock.

Since
Java Persistence 2.0
PESSIMISTIC_WRITEback to summary
public static final LockModeType PESSIMISTIC_WRITE

Pessimistic write lock.

Since
Java Persistence 2.0
READback to summary
public static final LockModeType READ

Synonymous with OPTIMISTIC. OPTIMISTIC is to be preferred for new applications.

WRITEback to summary
public static final LockModeType WRITE

Synonymous with OPTIMISTIC_FORCE_INCREMENT. OPTIMISTIC_FORCE_IMCREMENT is to be preferred for new applications.

Constructor Detail

LockModeTypeback to summary
private LockModeType()

Method Detail

valueOfback to summary
public static LockModeType valueOf(String name)
valuesback to summary
public static LockModeType[] values()