Package org.hibernate
Class LockOptions
java.lang.Object
org.hibernate.LockOptions
- All Implemented Interfaces:
Serializable
@Deprecated(since="7",
forRemoval=true)
public class LockOptions
extends Object
implements Serializable
Deprecated, for removal: This API element is subject to removal in a future version.
Contains a set of options describing how a row of a database table
mapped by an entity should be locked. For
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 int
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.static final LockOptions
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.static final LockOptions
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.static final int
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.static final LockOptions
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.static final int
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed. -
Constructor Summary
ConstructorsModifierConstructorDescriptionDeprecated, for removal: This API element is subject to removal in a future version.Construct an instance with modeLockMode.NONE
and no timeout.protected
LockOptions
(boolean immutable, LockMode lockMode) Deprecated, for removal: This API element is subject to removal in a future version.Internal operation used to create immutable global instances.LockOptions
(LockMode lockMode) Deprecated, for removal: This API element is subject to removal in a future version.Construct an instance with the given mode and no timeout.LockOptions
(LockMode lockMode, int timeout) Deprecated.Use LockOptions(LockMode, Timeout) insteadLockOptions
(LockMode lockMode, int timeout, PessimisticLockScope scope) Deprecated.LockOptions
(LockMode lockMode, int timeout, Locking.Scope scope, Locking.FollowOn followOnStrategy) Deprecated, for removal: This API element is subject to removal in a future version.LockOptions
(LockMode lockMode, Timeout timeout) Deprecated, for removal: This API element is subject to removal in a future version.Construct an instance with the given mode and timeout.LockOptions
(LockMode lockMode, Timeout timeout, PessimisticLockScope jpaScope) -
Method Summary
Modifier and TypeMethodDescriptionstatic LockOptions
copy
(LockOptions source, LockOptions destination) Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.boolean
Deprecated, for removal: This API element is subject to removal in a future version.Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.int
Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.getAliasSpecificLockMode
(String alias) Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.getEffectiveLockMode
(String alias) Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Deprecated.Use getFollowOnStrategy() instead.Deprecated, for removal: This API element is subject to removal in a future version.Whether follow-on locking is allowed or, if not, how to handle cases where Hibernate determines it would need to use follow-on locking.Deprecated, for removal: This API element is subject to removal in a future version.Retrieve the overall lock mode in effect for this set of options.Deprecated, for removal: This API element is subject to removal in a future version.Use getScope() insteadgetScope()
Deprecated, for removal: This API element is subject to removal in a future version.Associated lock scopeDeprecated, for removal: This API element is subject to removal in a future version.The timeout associated withthis
options, defining a maximum amount of time that the database should wait to obtain a pessimistic lock before returning an error to the client.int
Deprecated, for removal: This API element is subject to removal in a future version.The timeout, in milliseconds, associated withthis
options.boolean
Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.int
hashCode()
Deprecated, for removal: This API element is subject to removal in a future version.boolean
Deprecated, for removal: This API element is subject to removal in a future version.boolean
isEmpty()
Deprecated, for removal: This API element is subject to removal in a future version.Whether thisLockOptions
instance is "empty".makeCopy()
Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.void
overlay
(LockOptions lockOptions) Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.setAliasSpecificLockMode
(String alias, LockMode lockMode) Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.setFollowOnLocking
(Boolean followOnLocking) Deprecated.Use setFollowOnStrategy(org.hibernate.Locking.FollowOn) instead.setFollowOnStrategy
(Locking.FollowOn followOnStrategy) Deprecated, for removal: This API element is subject to removal in a future version.How to handle cases where Hibernate has determined it would need to use follow-on locking.setLockMode
(LockMode lockMode) Deprecated, for removal: This API element is subject to removal in a future version.Set the overall lock mode.setLockScope
(PessimisticLockScope jpaScope) Deprecated, for removal: This API element is subject to removal in a future version.Use setScope(org.hibernate.Locking.Scope) insteadsetScope
(Locking.Scope scope) Deprecated, for removal: This API element is subject to removal in a future version.Set the associated lock scopesetTimeout
(Timeout timeout) Deprecated, for removal: This API element is subject to removal in a future version.Set the timeout associated withthis
options.setTimeOut
(int timeout) Deprecated, for removal: This API element is subject to removal in a future version.Set the timeout, in milliseconds, associated withthis
options.
-
Field Details
-
NONE
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.RepresentsLockMode.NONE
, to which timeout and scope are not applicable. -
READ
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.RepresentsLockMode.READ
, to which timeout and scope are not applicable. -
UPGRADE
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.RepresentsLockMode.PESSIMISTIC_WRITE
with no timeout, and no extension of the lock to owned collections. -
NO_WAIT
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.- See Also:
-
WAIT_FOREVER
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.- See Also:
-
SKIP_LOCKED
Deprecated, for removal: This API element is subject to removal in a future version.This, and the other constants on this class, will be removed.- See Also:
-
-
Constructor Details
-
LockOptions
public LockOptions()Deprecated, for removal: This API element is subject to removal in a future version.Construct an instance with modeLockMode.NONE
and no timeout.- See Also:
-
LockOptions
Deprecated, for removal: This API element is subject to removal in a future version.Construct an instance with the given mode and no timeout.- Parameters:
lockMode
- The initial lock mode- See Also:
-
LockOptions
Deprecated, for removal: This API element is subject to removal in a future version.Construct an instance with the given mode and timeout.- Parameters:
lockMode
- The initial lock modetimeout
- The initial timeout, in milliseconds- See Also:
-
LockOptions
Deprecated, for removal: This API element is subject to removal in a future version.- Parameters:
lockMode
- The initial lock modetimeout
- The initial timeoutjpaScope
- The initial lock scope- See Also:
-
LockOptions
Deprecated, for removal: This API element is subject to removal in a future version.Internal operation used to create immutable global instances.- See Also:
-
LockOptions
public LockOptions(LockMode lockMode, int timeout, Locking.Scope scope, Locking.FollowOn followOnStrategy) Deprecated, for removal: This API element is subject to removal in a future version. -
LockOptions
Deprecated.Use LockOptions(LockMode, Timeout) insteadConstruct an instance with the given mode and timeout.- Parameters:
lockMode
- The initial lock modetimeout
- The initial timeout, in milliseconds
-
LockOptions
@Deprecated(since="7.0") public LockOptions(LockMode lockMode, int timeout, PessimisticLockScope scope) Deprecated.- Parameters:
lockMode
- The initial lock modetimeout
- The initial timeout, in millisecondsscope
- The initial lock scope
-
-
Method Details
-
isEmpty
public boolean isEmpty()Deprecated, for removal: This API element is subject to removal in a future version. -
getLockMode
Deprecated, for removal: This API element is subject to removal in a future version.Retrieve the overall lock mode in effect for this set of options.- Returns:
- the overall lock mode
-
setLockMode
Deprecated, for removal: This API element is subject to removal in a future version.Set the overall lock mode. The default isLockMode.NONE
, that is, no locking at all.- Parameters:
lockMode
- the new overall lock mode- Returns:
this
for method chaining
-
getTimeout
Deprecated, for removal: This API element is subject to removal in a future version.The timeout associated withthis
options, defining a maximum amount of time that the database should wait to obtain a pessimistic lock before returning an error to the client. -
setTimeout
Deprecated, for removal: This API element is subject to removal in a future version.Set the timeout associated withthis
options.- Returns:
this
for method chaining- See Also:
-
getTimeOut
public int getTimeOut()Deprecated, for removal: This API element is subject to removal in a future version.The timeout, in milliseconds, associated withthis
options.NO_WAIT
,WAIT_FOREVER
, orSKIP_LOCKED
represent 3 "magic" values.- Returns:
- a timeout in milliseconds,
NO_WAIT
,WAIT_FOREVER
, orSKIP_LOCKED
-
setTimeOut
Deprecated, for removal: This API element is subject to removal in a future version.Set the timeout, in milliseconds, associated withthis
options.NO_WAIT
,WAIT_FOREVER
, orSKIP_LOCKED
represent 3 "magic" values.- Returns:
this
for method chaining- See Also:
-
getScope
Deprecated, for removal: This API element is subject to removal in a future version.Associated lock scope -
setScope
Deprecated, for removal: This API element is subject to removal in a future version.Set the associated lock scope -
getFollowOnStrategy
Deprecated, for removal: This API element is subject to removal in a future version.Whether follow-on locking is allowed or, if not, how to handle cases where Hibernate determines it would need to use follow-on locking.- See Also:
-
setFollowOnStrategy
Deprecated, for removal: This API element is subject to removal in a future version.How to handle cases where Hibernate has determined it would need to use follow-on locking.- See Also:
-
hasNonDefaultOptions
public boolean hasNonDefaultOptions()Deprecated, for removal: This API element is subject to removal in a future version. -
equals
Deprecated, for removal: This API element is subject to removal in a future version. -
hashCode
public int hashCode()Deprecated, for removal: This API element is subject to removal in a future version. -
getLockScope
Deprecated, for removal: This API element is subject to removal in a future version.Use getScope() insteadThe current lock scope:PessimisticLockScope.EXTENDED
means the lock extends to rows of owned collections, butPessimisticLockScope.NORMAL
means only the entity table and secondary tables are locked.
- Returns:
- the current
PessimisticLockScope
-
setLockScope
@Deprecated(since="7", forRemoval=true) public LockOptions setLockScope(PessimisticLockScope jpaScope) Deprecated, for removal: This API element is subject to removal in a future version.Use setScope(org.hibernate.Locking.Scope) insteadSet the lock scope:PessimisticLockScope.EXTENDED
means the lock extends to rows of owned collections, butPessimisticLockScope.NORMAL
means only the entity table and secondary tables are locked.
- Parameters:
jpaScope
- the newPessimisticLockScope
- Returns:
this
for method chaining
-
getFollowOnLocking
Deprecated.Use getFollowOnStrategy() instead.Whether follow-on locking is allowed or, if not, how to handle cases where Hibernate determines it would need to use follow-on locking.- See Also:
-
setFollowOnLocking
Deprecated.Use setFollowOnStrategy(org.hibernate.Locking.FollowOn) instead.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:
this
for method chaining- See Also:
-
getAliasSpecificLocks
@Deprecated(since="7", forRemoval=true) public Set<Map.Entry<String,LockMode>> getAliasSpecificLocks()Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.- Returns:
- an iterable with the
Map.Entry
s
-
setAliasSpecificLockMode
@Deprecated(since="7", forRemoval=true) public LockOptions setAliasSpecificLockMode(String alias, LockMode lockMode) Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Specify theLockMode
to 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:
this
for method chaining- See Also:
-
getAliasLockCount
Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.The number of aliases that have alias-specific lock modes specified.- Returns:
- the number of explicitly defined alias lock modes.
-
hasAliasSpecificLockModes
Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Whether thisLockOptions
instance defines alias-specific lock-modes- Returns:
true
if this object defines alias-specific lock modes;false
otherwise.
-
getAliasSpecificLockMode
Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Get theLockMode
explicitly 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.
-
getAliasLockIterator
@Deprecated(since="7", forRemoval=true) public Iterator<Map.Entry<String,LockMode>> getAliasLockIterator()Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.- Returns:
- an iterator over the
Map.Entry
s
-
getEffectiveLockMode
Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Determine theLockMode
to apply to the given alias. If no mode was explicitly set, the overall mode is returned. If the overall lock mode is alsonull
,LockMode.NONE
is 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.
- See Also:
-
findGreatestLockMode
Deprecated, for removal: This API element is subject to removal in a future version.Alias-specific locks are no longer supported, roughly replaced with locking scope.Currently needed for follow-on locking.- Returns:
- The greatest of all requested lock modes.
- See Also:
-
makeCopy
Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.Make a copy. The new copy will be mutable even if the original wasn't.- Returns:
- The copy
-
makeDefensiveCopy
Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.Make a copy, unless this is an immutable instance.- Returns:
- The copy, or this if it was immutable.
-
overlay
Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.Copy the given lock options into this instance, merging the alias-specific lock modes. -
copy
@Deprecated(since="7", forRemoval=true) public static LockOptions copy(LockOptions source, LockOptions destination) Deprecated, for removal: This API element is subject to removal in a future version.LockOptions will be made into a record.Copy the options in the first given instance ofLockOptions
to the second given instance.- Parameters:
source
- Source for the copy (copied from)destination
- Destination for the copy (copied to)- Returns:
- destination
-
LockMode
,Timeout
, orPessimisticLockScope
may be passed directly as an option tofind()
,refresh()
, orlock()
. Therefore, this class is obsolete as an API and will be moved to an SPI package.For HQL/JPQL queries, locking should be controlled via operations of the
SelectionQuery
interface:CommonQueryContract.setTimeout(Timeout)
PessimisticLockScope
may be set usingSelectionQuery.setLockScope(PessimisticLockScope)
SelectionQuery.setLockMode(String, LockMode)
SelectionQuery.setFollowOnLocking(boolean)
Timeouts
provides several operations to simplify migration.