Class LockOptions
- All Implemented Interfaces:
FindOption,RefreshOption,Serializable
Session.lock(Object, LockOptions),
Session.get(Class, Object, LockOptions), or
Session.refresh(Object, LockOptions), the relevant options
are:
- the lock mode,
- the pessimistic lock timeout, and
- the lock scope, that is, whether the lock extends to rows of owned collections.
Timeout and lock scope are ignored if the specified LockMode
represents a flavor of optimistic
locking.
In HQL and criteria queries, lock modes can be defined in an even more granular fashion, with the option to specify a lock mode that applies only to a certain query alias.
Finally, the use of follow-on locking may be force enabled or disabled,
overriding the default behavior of the SQL dialect by passing a non-null argument
to setFollowOnLocking(Boolean).
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intIndicates that the database should not wait at all to acquire a pessimistic lock which is not immediately available.static final LockOptionsRepresentsLockMode.NONE, to which timeout and scope are not applicable.static final LockOptionsRepresentsLockMode.READ, to which timeout and scope are not applicable.static final intDeprecated.static final LockOptionsRepresentsLockMode.PESSIMISTIC_WRITEwith no timeout, and no extension of the lock to owned collections.static final intIndicates that there is no timeout for the lock acquisition, that is, that the database should in principle wait forever to obtain the lock. -
Constructor Summary
ConstructorsConstructorDescriptionConstruct an instance with modeLockMode.NONEand timeoutWAIT_FOREVER.LockOptions(LockMode lockMode) Construct an instance with the given mode andWAIT_FOREVER.LockOptions(LockMode lockMode, int timeout) Construct an instance with the given mode and timeout.LockOptions(LockMode lockMode, int timeout, PessimisticLockScope scope) -
Method Summary
Modifier and TypeMethodDescriptionstatic LockOptionscopy(LockOptions source, LockOptions destination) Copy the options in the first given instance ofLockOptionsto the second given instance.booleanCurrently needed for follow-on locking.intThe number of aliases that have alias-specific lock modes specified.Deprecated.getAliasSpecificLockMode(String alias) Get theLockModeexplicitly specified for the given alias viasetAliasSpecificLockMode(String, LockMode).getEffectiveLockMode(String alias) Determine theLockModeto apply to the given alias.Returns a value indicating if follow-on locking was force enabled or disabled, overriding the default behavior of the SQL dialect.Retrieve the overall lock mode in effect for this set of options.The current lock scope:PessimisticLockScope.EXTENDEDmeans the lock extends to rows of owned collections, butPessimisticLockScope.NORMALmeans only the entity table and secondary tables are locked.booleangetScope()Deprecated.usegetLockScope()intThe current timeout, a maximum amount of time in milliseconds that the database should wait to obtain a pessimistic lock before returning an error to the client.booleanDoes thisLockOptionsinstance define alias-specific lock modes?inthashCode()booleanisEmpty()Determine of the lock options are empty.makeCopy()Make a copy.Make a copy, unless this is an immutable instance.voidoverlay(LockOptions lockOptions) Copy the given lock options into this instance, merging the alias-specific lock modes.setAliasSpecificLockMode(String alias, LockMode lockMode) Specify theLockModeto be used for the given query alias.setFollowOnLocking(Boolean followOnLocking) Force enable or disable the use of follow-on locking, overriding the default behavior of the SQL dialect.setLockMode(LockMode lockMode) Set the overall lock mode.setLockScope(PessimisticLockScope scope) Set the lock scope:PessimisticLockScope.EXTENDEDmeans the lock extends to rows of owned collections, butPessimisticLockScope.NORMALmeans only the entity table and secondary tables are locked.setScope(boolean scope) Deprecated.setTimeOut(int timeout) Set the timeout, that is, the maximum amount of time in milliseconds that the database should wait to obtain a pessimistic lock before returning an error to the client.
-
Field Details
-
NONE
RepresentsLockMode.NONE, to which timeout and scope are not applicable. -
READ
RepresentsLockMode.READ, to which timeout and scope are not applicable. -
UPGRADE
RepresentsLockMode.PESSIMISTIC_WRITEwith no timeout, and no extension of the lock to owned collections. -
NO_WAIT
public static final int NO_WAITIndicates that the database should not wait at all to acquire a pessimistic lock which is not immediately available. This has the same effect asLockMode.UPGRADE_NOWAIT.- See Also:
-
WAIT_FOREVER
public static final int WAIT_FOREVERIndicates that there is no timeout for the lock acquisition, that is, that the database should in principle wait forever to obtain the lock.- See Also:
-
SKIP_LOCKED
Deprecated.Indicates that rows which are already locked should be skipped.- See Also:
-
-
Constructor Details
-
LockOptions
public LockOptions()Construct an instance with modeLockMode.NONEand timeoutWAIT_FOREVER. -
LockOptions
Construct an instance with the given mode andWAIT_FOREVER.- Parameters:
lockMode- The initial lock mode
-
LockOptions
Construct an instance with the given mode and timeout.- Parameters:
lockMode- The initial lock modetimeout- The initial timeout
-
LockOptions
- Parameters:
lockMode- The initial lock modetimeout- The initial timeoutscope- The initial lock scope
-
-
Method Details
-
isEmpty
public boolean isEmpty()Determine of the lock options are empty.- Returns:
trueif the lock options are equivalent toNONE.
-
getLockMode
Retrieve the overall lock mode in effect for this set of options.- Returns:
- the overall lock mode
-
setLockMode
Set the overall lock mode. The default isLockMode.NONE, that is, no locking at all.- Parameters:
lockMode- the new overall lock mode- Returns:
thisfor method chaining
-
setAliasSpecificLockMode
Specify theLockModeto be used for the given query alias.- Parameters:
alias- the query alias to which the lock mode applieslockMode- the lock mode to apply to the given alias- Returns:
thisfor method chaining- See Also:
-
getAliasSpecificLockMode
Get theLockModeexplicitly specified for the given alias viasetAliasSpecificLockMode(String, LockMode).Differs from
getEffectiveLockMode(String)in that here we only return an explicitly specified alias-specific lock mode.- Parameters:
alias- The alias for which to locate the explicit lock mode.- Returns:
- The explicit lock mode for that alias.
-
getEffectiveLockMode
Determine theLockModeto apply to the given alias. If no mode was setAliasSpecificLockMode(String, LockMode) explicitly set}, the getLockMode() overall mode} is returned. If the overall lock mode is alsonull,LockMode.NONEis returned.Differs from
getAliasSpecificLockMode(String)in that here we fall back to only returning the overall lock mode.- Parameters:
alias- The alias for which to locate the effective lock mode.- Returns:
- The effective lock mode.
-
hasAliasSpecificLockModes
public boolean hasAliasSpecificLockModes()Does thisLockOptionsinstance define alias-specific lock modes?- Returns:
trueif this object defines alias-specific lock modes;falseotherwise.
-
getAliasLockCount
public int getAliasLockCount()The number of aliases that have alias-specific lock modes specified.- Returns:
- the number of explicitly defined alias lock modes.
-
getAliasLockIterator
Deprecated.- Returns:
- an iterator over the
Map.Entrys
-
getAliasSpecificLocks
- Returns:
- an iterable with the
Map.Entrys
-
findGreatestLockMode
Currently needed for follow-on locking.- Returns:
- The greatest of all requested lock modes.
-
getTimeOut
public int getTimeOut()The current timeout, a maximum amount of time in milliseconds that the database should wait to obtain a pessimistic lock before returning an error to the client.NO_WAIT,WAIT_FOREVER, orSKIP_LOCKEDrepresent 3 "magic" values.- Returns:
- a timeout in milliseconds,
NO_WAIT,WAIT_FOREVER, orSKIP_LOCKED
-
setTimeOut
Set the timeout, that is, the maximum amount of time in milliseconds that the database should wait to obtain a pessimistic lock before returning an error to the client.NO_WAIT,WAIT_FOREVER, orSKIP_LOCKEDrepresent 3 "magic" values.- Parameters:
timeout- the new timeout setting, in milliseconds- Returns:
thisfor method chaining- See Also:
-
getLockScope
The current lock scope:PessimisticLockScope.EXTENDEDmeans the lock extends to rows of owned collections, butPessimisticLockScope.NORMALmeans only the entity table and secondary tables are locked.
- Returns:
- the current
PessimisticLockScope
-
setLockScope
Set the lock scope:PessimisticLockScope.EXTENDEDmeans the lock extends to rows of owned collections, butPessimisticLockScope.NORMALmeans only the entity table and secondary tables are locked.
- Parameters:
scope- the newPessimisticLockScope- Returns:
thisfor method chaining
-
getScope
Deprecated.usegetLockScope()The current lock scope setting:truemeans the lock extends to rows of owned collections, butfalsemeans only the entity table and secondary tables are locked.
- Returns:
trueif the lock extends to owned associations
-
setScope
Deprecated.Set the lock scope setting:truemeans the lock extends to rows of owned collections, butfalsemeans only the entity table and secondary tables are locked.
- Parameters:
scope- the new scope setting- Returns:
thisfor method chaining
-
getFollowOnLocking
Returns a value indicating if follow-on locking was force enabled or disabled, overriding the default behavior of the SQL dialect.- Returns:
trueif follow-on locking was force enabled,falseif follow-on locking was force disabled, ornullif the default behavior of the dialect has not been overridden.- See Also:
-
setFollowOnLocking
Force enable or disable the use of follow-on locking, overriding the default behavior of the SQL dialect.- Parameters:
followOnLocking- The new follow-on locking setting- Returns:
thisfor method chaining- See Also:
-
makeCopy
Make a copy. The new copy will be mutable even if the original wasn't.- Returns:
- The copy
-
makeDefensiveCopy
Make a copy, unless this is an immutable instance.- Returns:
- The copy, or this if it was immutable.
-
overlay
Copy the given lock options into this instance, merging the alias-specific lock modes. -
copy
Copy the options in the first given instance ofLockOptionsto the second given instance.- Parameters:
source- Source for the copy (copied from)destination- Destination for the copy (copied to)- Returns:
- destination
-
equals
-
hashCode
public int hashCode()
-
LockMode.UPGRADE_SKIPLOCKED