Class PooledOptimizer
- All Implemented Interfaces:
InitialValueAwareOptimizer, Optimizer
The pool size is controlled by the allocationSize of a
sequence generator or
sequence generator.
This optimizer interprets the current value held by its underlying logical sequence (that is, the last value generated by a database sequence, or the current value of a table row emulating a sequence) as an upper bound on the range of already-allocated ids. From time to time, the optimizer allocates a range of values to itself, interpreting the next value retrieved from the logical sequence as an upper bound on the range of newly allocated ids.
The PooledLoOptimizer is similar, but interprets the current value
of the logical sequence as a lower bound on the range of already-allocated
ids.
This optimizer has similar performance characteristics to the
HiLoOptimizer, but here the range bounds are stored directly by the
underlying database structures.
- See Also:
-
Field Summary
Fields inherited from class AbstractOptimizer
incrementSize, returnClass -
Constructor Summary
ConstructorsConstructorDescriptionPooledOptimizer(Class<?> returnClass, int incrementSize) Constructs aPooledOptimizer -
Method Summary
Modifier and TypeMethodDescriptionbooleanAre increments to be applied to the values stored in the underlying value source?createLowValueExpression(Expression databaseValue, SessionFactoryImplementor sessionFactory) Creates an expression representing the low/base value for ID allocation in batch insert operations.generate(AccessCallback callback) Generate an identifier value accounting for this specific optimization.intA common means to access the last value obtained from the underlying source.Getter for property 'lastValue'.voidinjectInitialValue(long initialValue) Reports the user specified initial value to the optimizer.voidreset()Reset the optimizer before restarting the underlying database sequence.Methods inherited from class AbstractOptimizer
getIncrementSize, getReturnClass
-
Constructor Details
-
PooledOptimizer
Constructs aPooledOptimizer- Parameters:
returnClass- The Java type of the values to be generatedincrementSize- The increment size.
-
-
Method Details
-
generate
Description copied from interface:OptimizerGenerate an identifier value accounting for this specific optimization. -
reset
-
getLastSourceValue
Description copied from interface:OptimizerA 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.- Specified by:
getLastSourceValuein interfaceOptimizer- Returns:
- The last value we obtained from the underlying source; null indicates we have not yet consulted with the source.
-
applyIncrementSizeToSourceValues
public boolean applyIncrementSizeToSourceValues()Description copied from interface:OptimizerAre increments to be applied to the values stored in the underlying value source?- Specified by:
applyIncrementSizeToSourceValuesin interfaceOptimizer- 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 size is a completely in-memory construct.
-
getLastValue
Getter for property 'lastValue'.Exposure intended for testing purposes.
- Returns:
- Value for property 'lastValue'.
-
injectInitialValue
public void injectInitialValue(long initialValue) Description copied from interface:InitialValueAwareOptimizerReports the user specified initial value to the optimizer.-1is used to indicate that the user did not specify.- Specified by:
injectInitialValuein interfaceInitialValueAwareOptimizer- Parameters:
initialValue- The initial value specified by the user, or-1to indicate that the user did not specify an initial value.
-
createLowValueExpression
public Expression createLowValueExpression(Expression databaseValue, SessionFactoryImplementor sessionFactory) Description copied from interface:OptimizerCreates an expression representing the low/base value for ID allocation in batch insert operations.Each optimizer implementation should define its own strategy for calculating the starting value of a sequence range.
- Specified by:
createLowValueExpressionin interfaceOptimizer- Parameters:
databaseValue- The expression representing the next value from database sequencesessionFactory- The session factory- Returns:
- An expression that calculates the low/base value according to the optimizer strategy
-
getAdjustment
public int getAdjustment()- Specified by:
getAdjustmentin interfaceOptimizer
-