Package org.hibernate.engine
Class Versioning
java.lang.Object
org.hibernate.engine.Versioning
Utilities for dealing with optimisitic locking values.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intApply optimisitc locking based on the a current vs.static final intApply optimisitc locking based on the a current vs.static final intApply no optimistic lockingstatic final intApply optimisitc locking based on the defined version or timestamp property. -
Method Summary
Modifier and TypeMethodDescriptionstatic ObjectgetVersion(Object[] fields, EntityPersister persister) Extract the optimisitc locking value out of the entity state snapshot.static Objectincrement(Object version, VersionType versionType, SessionImplementor session) Generate the next increment in the optimisitc locking value according theVersionTypecontract for the version property.static booleanisVersionIncrementRequired(int[] dirtyProperties, boolean hasDirtyCollections, boolean[] propertyVersionability) Do we need to increment the version number, given the dirty properties?static booleanseedVersion(Object[] fields, int versionProperty, VersionType versionType, SessionImplementor session) Create an initial optimisitc locking value according theVersionTypecontract for the version property if required and inject it into the snapshot state.static voidsetVersion(Object[] fields, Object version, EntityPersister persister) Inject the optimisitc locking value into the entity state snapshot.
-
Field Details
-
OPTIMISTIC_LOCK_NONE
public static final int OPTIMISTIC_LOCK_NONEApply no optimistic locking- See Also:
-
OPTIMISTIC_LOCK_VERSION
public static final int OPTIMISTIC_LOCK_VERSIONApply optimisitc locking based on the defined version or timestamp property.- See Also:
-
OPTIMISTIC_LOCK_ALL
public static final int OPTIMISTIC_LOCK_ALLApply optimisitc locking based on the a current vs. snapshot comparison of all properties.- See Also:
-
OPTIMISTIC_LOCK_DIRTY
public static final int OPTIMISTIC_LOCK_DIRTYApply optimisitc locking based on the a current vs. snapshot comparison of dirty properties.- See Also:
-
-
Method Details
-
seedVersion
public static boolean seedVersion(Object[] fields, int versionProperty, VersionType versionType, SessionImplementor session) Create an initial optimisitc locking value according theVersionTypecontract for the version property if required and inject it into the snapshot state.- Parameters:
fields- The current snapshot stateversionProperty- The index of the version propertyversionType- The version typesession- The orginating session- Returns:
- True if we injected a new version value into the fields array; false otherwise.
-
increment
Generate the next increment in the optimisitc locking value according theVersionTypecontract for the version property.- Parameters:
version- The current versionversionType- The version typesession- The originating session- Returns:
- The incremented optimistic locking value.
-
setVersion
Inject the optimisitc locking value into the entity state snapshot.- Parameters:
fields- The state snapshotversion- The optimisitc locking valuepersister- The entity persister
-
getVersion
Extract the optimisitc locking value out of the entity state snapshot.- Parameters:
fields- The state snapshotpersister- The entity persister- Returns:
- The extracted optimisitc locking value
-
isVersionIncrementRequired
public static boolean isVersionIncrementRequired(int[] dirtyProperties, boolean hasDirtyCollections, boolean[] propertyVersionability) Do we need to increment the version number, given the dirty properties?- Parameters:
dirtyProperties- The array of property indexes which were deemed dirtyhasDirtyCollections- Were any collections found to be dirty (structurally changed)propertyVersionability- An array indicating versionability of each property.- Returns:
- True if a version increment is required; false otherwise.
-