Enum LockMode
- java.lang.Object
-
- java.lang.Enum<LockMode>
-
- org.hibernate.LockMode
-
- All Implemented Interfaces:
Serializable,Comparable<LockMode>
public enum LockMode extends Enum<LockMode>
Instances represent a lock mode for a row of a relational database table. It is not intended that users spend much time worrying about locking since Hibernate usually obtains exactly the right lock level automatically. Some "advanced" users may wish to explicitly specify lock levels.This enumeration of lock modes competes with the JPA-defined
LockModeType, but offers additional options, includingUPGRADE_NOWAITandUPGRADE_SKIPLOCKED.
-
-
Enum Constant Summary
Enum Constants Enum Constant Description NONENo lock required.OPTIMISTICA shared optimistic lock.OPTIMISTIC_FORCE_INCREMENTA kind of exclusive optimistic lock.PESSIMISTIC_FORCE_INCREMENTA pessimistic write lock which immediately increments the version of the locked object.PESSIMISTIC_READA pessimistic shared lock, which prevents concurrent transactions from writing the locked object.PESSIMISTIC_WRITEA pessimistic upgrade lock, which prevents concurrent transactions from reading or writing the locked object.READA shared lock.UPGRADE_NOWAITA pessimistic upgrade lock, obtained using an Oracle-styleselect for update nowait.UPGRADE_SKIPLOCKEDA pessimistic upgrade lock, obtained using an Oracle-styleselect for update skip locked.WRITEAn exclusive write lock.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static LockModefromExternalForm(String externalForm)static LockModefromJpaLockMode(LockModeType lockMode)booleangreaterThan(LockMode mode)Check if this lock mode is more restrictive than the given lock mode.booleanlessThan(LockMode mode)Check if this lock mode is less restrictive than the given lock mode.StringtoExternalForm()LockModeTypetoJpaLockMode()static LockModeTypetoJpaLockMode(LockMode lockMode)LockOptionstoLockOptions()static LockModevalueOf(String name)Returns the enum constant of this type with the specified name.static LockMode[]values()Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
NONE
public static final LockMode NONE
No lock required. If an object is requested with this lock mode, aREADlock will be obtained if it turns out to be necessary to actually read the state from the database, rather than pull it from a cache.This is the "default" lock mode, the mode requested by calling
Session.get(Class, Object)without passing an explicit mode. It permits the state of an object to be retrieved from the cache without the cost of database access.- See Also:
LockModeType.NONE
-
READ
public static final LockMode READ
A shared lock. Objects in this lock mode were read from the database in the current transaction, rather than being pulled from a cache.Note that this lock mode is the same as the JPA-defined modes
LockModeType.READandLockModeType.OPTIMISTIC.- See Also:
LockModeType.OPTIMISTIC
-
OPTIMISTIC
public static final LockMode OPTIMISTIC
A shared optimistic lock. Assumes that the current transaction will not experience contention for the state of an entity. The version will be checked near the end of the transaction, to verify that this was indeed the case.Note that, despite the similar names this lock mode is not the same as the JPA-defined mode
LockModeType.OPTIMISTIC.
-
OPTIMISTIC_FORCE_INCREMENT
public static final LockMode OPTIMISTIC_FORCE_INCREMENT
A kind of exclusive optimistic lock. Assumes that the current transaction will not experience contention for the state of an entity. The version will be checked and incremented near the end of the transaction, to verify that this was indeed the case, and to signal to concurrent optimistic readers that their optimistic locks have failed.- See Also:
LockModeType.OPTIMISTIC_FORCE_INCREMENT
-
WRITE
public static final LockMode WRITE
An exclusive write lock. Objects in this lock mode were updated or inserted in the database in the current transaction.This lock mode is for internal use only and is not a legal argument to
Session.get(Class, Object, LockMode),Session.refresh(Object, LockMode), orSession.lock(Object, LockMode). These methods throw an exception ifWRITEis given as an argument.Note that, despite the similar names, this lock mode is not the same as the JPA-defined mode
LockModeType.WRITE.
-
UPGRADE_NOWAIT
public static final LockMode UPGRADE_NOWAIT
A pessimistic upgrade lock, obtained using an Oracle-styleselect for update nowait. The semantics of this lock mode, if the lock is successfully obtained, are the same asPESSIMISTIC_WRITE. If the lock is not immediately available, an exception occurs.
-
UPGRADE_SKIPLOCKED
public static final LockMode UPGRADE_SKIPLOCKED
A pessimistic upgrade lock, obtained using an Oracle-styleselect for update skip locked. The semantics of this lock mode, if the lock is successfully obtained, are the same asPESSIMISTIC_WRITE. But if the lock is not immediately available, no exception occurs, but the locked row is not returned from the database.
-
PESSIMISTIC_READ
public static final LockMode PESSIMISTIC_READ
A pessimistic shared lock, which prevents concurrent transactions from writing the locked object. Obtained via aselect for sharestatement in dialects where this syntax is supported, and viaselect for updatein other dialects.On databases which do not support
for share, this lock mode is equivalent toPESSIMISTIC_WRITE.- See Also:
LockModeType.PESSIMISTIC_READ
-
PESSIMISTIC_WRITE
public static final LockMode PESSIMISTIC_WRITE
A pessimistic upgrade lock, which prevents concurrent transactions from reading or writing the locked object. Obtained via aselect for updatestatement.- See Also:
LockModeType.PESSIMISTIC_WRITE
-
PESSIMISTIC_FORCE_INCREMENT
public static final LockMode PESSIMISTIC_FORCE_INCREMENT
A pessimistic write lock which immediately increments the version of the locked object. Obtained by immediate execution of anupdatestatement.- See Also:
LockModeType.PESSIMISTIC_FORCE_INCREMENT
-
-
Method Detail
-
values
public static LockMode[] 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 (LockMode c : LockMode.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static LockMode 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
-
fromJpaLockMode
public static LockMode fromJpaLockMode(LockModeType lockMode)
-
toJpaLockMode
public static LockModeType toJpaLockMode(LockMode lockMode)
-
toJpaLockMode
public LockModeType toJpaLockMode()
-
greaterThan
public boolean greaterThan(LockMode mode)
Check if this lock mode is more restrictive than the given lock mode.- Parameters:
mode- LockMode to check- Returns:
- true if this lock mode is more restrictive than given lock mode
-
lessThan
public boolean lessThan(LockMode mode)
Check if this lock mode is less restrictive than the given lock mode.- Parameters:
mode- LockMode to check- Returns:
- true if this lock mode is less restrictive than given lock mode
-
toExternalForm
public String toExternalForm()
-
toLockOptions
public LockOptions toLockOptions()
- Returns:
- an instance of
LockOptionswith this lock mode, and all other settings defaulted.
-
-