Package org.hibernate.id.enhanced
Class OptimizerFactory.HiLoOptimizer
java.lang.Object
org.hibernate.id.enhanced.OptimizerFactory.OptimizerSupport
org.hibernate.id.enhanced.OptimizerFactory.HiLoOptimizer
- All Implemented Interfaces:
Optimizer
- Enclosing class:
OptimizerFactory
Optimizer which applies a 'hilo' algorithm in memory to achieve
optimization.
A 'hilo' algorithm is simply a means for a single value stored in the
database to represent a "bucket" of possible, contiguous values. The
database value identifies which particular bucket we are on.
This database value must be paired with another value that defines the
size of the bucket; the number of possible values available.
The
incrementSize serves this purpose. The
naming here is meant more for consistency in that this value serves the
same purpose as the increment supplied to the OptimizerFactory.PooledOptimizer.
The general algorithms used to determine the bucket are:upperLimit = (databaseValue * incrementSize) + 1lowerLimit = upperLimit - 1
upperLimit = (1 * 20) + 1 = 21lowerLimit = 21 - 20 = 1
upperLimit = (2 * 20) + 1 = 41lowerLimit = 41 - 20 = 21
-
Field Summary
Fields inherited from class org.hibernate.id.enhanced.OptimizerFactory.OptimizerSupport
incrementSize, returnClass -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanAre increments to be applied to the values stored in the underlying value source?generate(AccessCallback callback) Generate an identifier value accounting for this specific optimization.Getter for property 'upperLimit'.A common means to access the last value obtained from the underlying source.Getter for property 'lastValue'.Methods inherited from class org.hibernate.id.enhanced.OptimizerFactory.OptimizerSupport
getIncrementSize, getReturnClass
-
Constructor Details
-
HiLoOptimizer
-
-
Method Details
-
generate
Generate an identifier value accounting for this specific optimization.- Parameters:
callback- Callback to access the underlying value source.- Returns:
- The generated identifier value.
-
getLastSourceValue
A common means to access the last value obtained from the underlying source. This is intended for testing purposes, since accessing the underlying database source directly is much more difficult.- Returns:
- The last value we obtained from the underlying source; null indicates we have not yet consulted with the source.
-
applyIncrementSizeToSourceValues
public boolean applyIncrementSizeToSourceValues()Are increments to be applied to the values stored in the underlying value source?- Returns:
- True if the values in the source are to be incremented according to the defined increment size; false otherwise, in which case the increment is totally an in memory construct.
-
getLastValue
Getter for property 'lastValue'. Exposure intended for testing purposes.- Returns:
- Value for property 'lastValue'.
-
getHiValue
Getter for property 'upperLimit'. Exposure intended for testing purposes.- Returns:
- Value for property 'upperLimit'.
-