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 org.hibernate.id.enhanced.AbstractOptimizer
incrementSize, returnClass
-
Constructor Summary
ConstructorsConstructorDescriptionPooledOptimizer
(Class<?> returnClass, int incrementSize) Constructs aPooledOptimizer
-
Method Summary
Modifier and TypeMethodDescriptionboolean
Are 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.int
A common means to access the last value obtained from the underlying source.Getter for property 'lastValue'.void
injectInitialValue
(long initialValue) Reports the user specified initial value to the optimizer.void
reset()
Reset the optimizer before restarting the underlying database sequence.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:Optimizer
Generate an identifier value accounting for this specific optimization. -
reset
public void reset()Description copied from interface:Optimizer
Reset the optimizer before restarting the underlying database sequence. -
getLastSourceValue
Description copied from interface:Optimizer
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.- Specified by:
getLastSourceValue
in 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:Optimizer
Are increments to be applied to the values stored in the underlying value source?- Specified by:
applyIncrementSizeToSourceValues
in 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:InitialValueAwareOptimizer
Reports the user specified initial value to the optimizer.-1
is used to indicate that the user did not specify.- Specified by:
injectInitialValue
in interfaceInitialValueAwareOptimizer
- Parameters:
initialValue
- The initial value specified by the user, or-1
to indicate that the user did not specify an initial value.
-
createLowValueExpression
public Expression createLowValueExpression(Expression databaseValue, SessionFactoryImplementor sessionFactory) Description copied from interface:Optimizer
Creates 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:
createLowValueExpression
in 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:
getAdjustment
in interfaceOptimizer
-