org.hibernate.engine
Class Versioning

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

public final class Versioning
extends Object

Utilities for dealing with optimisitic locking values.

Author:
Gavin King

Field Summary
static int OPTIMISTIC_LOCK_ALL
          Apply optimisitc locking based on the a current vs.
static int OPTIMISTIC_LOCK_DIRTY
          Apply optimisitc locking based on the a current vs.
static int OPTIMISTIC_LOCK_NONE
          Apply no optimistic locking
static int OPTIMISTIC_LOCK_VERSION
          Apply optimisitc locking based on the defined version or timestamp property.
 
Method Summary
static Object getVersion(Object[] fields, EntityPersister persister)
          Extract the optimisitc locking value out of the entity state snapshot.
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.
static boolean isVersionIncrementRequired(int[] dirtyProperties, boolean hasDirtyCollections, boolean[] propertyVersionability)
          Do we need to increment the version number, given the dirty properties?
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.
static void setVersion(Object[] fields, Object version, EntityPersister persister)
          Inject the optimisitc locking value into the entity state snapshot.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OPTIMISTIC_LOCK_NONE

public static final int OPTIMISTIC_LOCK_NONE
Apply no optimistic locking

See Also:
Constant Field Values

OPTIMISTIC_LOCK_VERSION

public static final int OPTIMISTIC_LOCK_VERSION
Apply optimisitc locking based on the defined version or timestamp property.

See Also:
Constant Field Values

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:
Constant Field Values

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:
Constant Field Values
Method Detail

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.


Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.