- java.lang.Object
-
- java.lang.Enum<LockModeType>
-
- javax.persistence.LockModeType
-
- All Implemented Interfaces:
- Serializable, Comparable<LockModeType>
public enum LockModeType extends Enum<LockModeType>
Lock modes can be specified by means of passing aLockModeType
argument to one of theEntityManager
methods that take locks (lock
,find
, orrefresh
) or to theQuery.setLockMode()
orTypedQuery.setLockMode()
method.Lock modes can be used to specify either optimistic or pessimistic locks.
Optimistic locks are specified using
LockModeType.OPTIMISTIC
andLockModeType.OPTIMISTIC_FORCE_INCREMENT
. The lock mode type valuesLockModeType.READ
andLockModeType.WRITE
are synonyms ofOPTIMISTIC
andOPTIMISTIC_FORCE_INCREMENT
respectively. The latter are to be preferred for new applications.The semantics of requesting locks of type
LockModeType.OPTIMISTIC
andLockModeType.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:- 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 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
, andLockModeType.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
, andLockModeType.PESSIMISTIC_FORCE_INCREMENT
are the following.If transaction T1 calls for a lock of type
LockModeType.PESSIMISTIC_READ
orLockModeType.PESSIMISTIC_WRITE
on an 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.
- P2 (Non-repeatable read): Transaction T1 reads a row. Another transaction T2 then modifies or deletes that row, before T1 has committed or rolled back.
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 withLockModeType.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 withLockModeType.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 orEntityTransaction
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
-
-
Enum Constant Summary
Enum Constants Enum Constant and Description NONE
No lock.OPTIMISTIC
Optimistic lock.OPTIMISTIC_FORCE_INCREMENT
Optimistic lock, with version update.PESSIMISTIC_FORCE_INCREMENT
Pessimistic write lock, with version update.PESSIMISTIC_READ
Pessimistic read lock.PESSIMISTIC_WRITE
Pessimistic write lock.READ
Synonymous withOPTIMISTIC
.WRITE
Synonymous withOPTIMISTIC_FORCE_INCREMENT
.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method and Description static LockModeType
valueOf(String name)
Returns the enum constant of this type with the specified name.static LockModeType[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
READ
public static final LockModeType READ
Synonymous withOPTIMISTIC
.OPTIMISTIC
is to be preferred for new applications.
-
WRITE
public static final LockModeType WRITE
Synonymous withOPTIMISTIC_FORCE_INCREMENT
.OPTIMISTIC_FORCE_IMCREMENT
is to be preferred for new applications.
-
OPTIMISTIC
public static final LockModeType OPTIMISTIC
Optimistic lock.- Since:
- Java Persistence 2.0
-
OPTIMISTIC_FORCE_INCREMENT
public static final LockModeType OPTIMISTIC_FORCE_INCREMENT
Optimistic lock, with version update.- Since:
- Java Persistence 2.0
-
PESSIMISTIC_READ
public static final LockModeType PESSIMISTIC_READ
Pessimistic read lock.- Since:
- Java Persistence 2.0
-
PESSIMISTIC_WRITE
public static final LockModeType PESSIMISTIC_WRITE
Pessimistic write lock.- Since:
- Java Persistence 2.0
-
PESSIMISTIC_FORCE_INCREMENT
public static final LockModeType PESSIMISTIC_FORCE_INCREMENT
Pessimistic write lock, with version update.- Since:
- Java Persistence 2.0
-
NONE
public static final LockModeType NONE
No lock.- Since:
- Java Persistence 2.0
-
-
Method Detail
-
values
public static LockModeType[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (LockModeType c : LockModeType.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static LockModeType valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is null
-
-
Deutsche Übersetzung
Sie haben gebeten, diese Seite auf Deutsch zu besuchen. Momentan ist nur die Oberfläche übersetzt, aber noch nicht der gesamte Inhalt.Wenn Sie mir bei Übersetzungen helfen wollen, ist Ihr Beitrag willkommen. Alles, was Sie tun müssen, ist, sich auf der Website zu registrieren und mir eine Nachricht zu schicken, in der Sie gebeten werden, Sie der Gruppe der Übersetzer hinzuzufügen, die Ihnen die Möglichkeit gibt, die gewünschten Seiten zu übersetzen. Ein Link am Ende jeder übersetzten Seite zeigt an, dass Sie der Übersetzer sind und einen Link zu Ihrem Profil haben.
Vielen Dank im Voraus.
Dokument erstellt 11/06/2005, zuletzt geändert 18/08/2025
Quelle des gedruckten Dokuments:https://www.gaudry.be/de/java-api-javaee-rf-javax/persistence/lockmodetype.html
Die Infobro ist eine persönliche Seite, deren Inhalt in meiner alleinigen Verantwortung liegt. Der Text ist unter der CreativeCommons-Lizenz (BY-NC-SA) verfügbar. Weitere Informationen auf die Nutzungsbedingungen und dem Autor.
Referenzen
Diese Verweise und Links verweisen auf Dokumente, die während des Schreibens dieser Seite konsultiert wurden, oder die zusätzliche Informationen liefern können, aber die Autoren dieser Quellen können nicht für den Inhalt dieser Seite verantwortlich gemacht werden.
Der Autor dieser Website ist allein dafür verantwortlich, wie die verschiedenen Konzepte und Freiheiten, die mit den Nachschlagewerken gemacht werden, hier dargestellt werden. Denken Sie daran, dass Sie mehrere Quellinformationen austauschen müssen, um das Risiko von Fehlern zu reduzieren.