Class Versioning

java.lang.Object
org.hibernate.engine.Versioning

public final class Versioning extends Object
Utilities for dealing with optimisitic locking values.
  • Field Details

    • OPTIMISTIC_LOCK_NONE

      public static final int OPTIMISTIC_LOCK_NONE
      Apply no optimistic locking
      See Also:
    • OPTIMISTIC_LOCK_VERSION

      public static final int OPTIMISTIC_LOCK_VERSION
      Apply optimisitc locking based on the defined version or timestamp property.
      See Also:
    • OPTIMISTIC_LOCK_ALL

      public static final int OPTIMISTIC_LOCK_ALL
      Apply optimisitc locking based on the a current vs. snapshot comparison of all properties.
      See Also:
    • OPTIMISTIC_LOCK_DIRTY

      public static final int OPTIMISTIC_LOCK_DIRTY
      Apply 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 the VersionType contract for the version property if required and inject it into the snapshot state.
      Parameters:
      fields - The current snapshot state
      versionProperty - The index of the version property
      versionType - The version type
      session - The orginating session
      Returns:
      True if we injected a new version value into the fields array; false otherwise.
    • increment

      public static Object increment(Object version, VersionType versionType, SessionImplementor session)
      Generate the next increment in the optimisitc locking value according the VersionType contract for the version property.
      Parameters:
      version - The current version
      versionType - The version type
      session - The originating session
      Returns:
      The incremented optimistic locking value.
    • setVersion

      public static void setVersion(Object[] fields, Object version, EntityPersister persister)
      Inject the optimisitc locking value into the entity state snapshot.
      Parameters:
      fields - The state snapshot
      version - The optimisitc locking value
      persister - The entity persister
    • getVersion

      public static Object getVersion(Object[] fields, EntityPersister persister)
      Extract the optimisitc locking value out of the entity state snapshot.
      Parameters:
      fields - The state snapshot
      persister - 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 dirty
      hasDirtyCollections - 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.