Package org.hibernate.id.enhanced
Class PooledOptimizer
java.lang.Object
org.hibernate.id.enhanced.AbstractOptimizer
org.hibernate.id.enhanced.PooledOptimizer
- All Implemented Interfaces:
InitialValueAwareOptimizer,Optimizer
Optimizer which uses a pool of values, storing the next low value of the range
in the database.
This optimizer works essentially the same as the HiLoOptimizer, except
that here the bucket ranges are actually encoded into the database structures.
If you prefer that the database value be interpreted as the bottom end of our
current range, then use the PooledLoOptimizer strategy.
- See Also:
-
Field Summary
Fields inherited from class org.hibernate.id.enhanced.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.A 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.Methods inherited from class org.hibernate.id.enhanced.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. -
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 is totally an 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
-