Package org.hibernate.id.enhanced
Class PooledLoOptimizer
java.lang.Object
org.hibernate.id.enhanced.AbstractOptimizer
org.hibernate.id.enhanced.PooledLoOptimizer
- All Implemented Interfaces:
Optimizer
Optimizer which uses a pool of values, backed by a logical sequence.
A logical sequence is usually just an unpooled sequence or table generator.
The pool size is controlled by the allocationSize
of a
sequence generator or
sequence generator.
From time to time, the optimizer allocates a range of values to itself, interpreting the next value retrieved from the logical sequence as the lower bound on the range of newly allocated ids. Thus, the generated ids begin with the value retrieved from the logical sequence.
The PooledOptimizer
is similar, but interprets the current value
of the logical sequence as an upper bound on the range of already-allocated
ids.
- See Also:
-
Field Summary
Fields inherited from class org.hibernate.id.enhanced.AbstractOptimizer
incrementSize, returnClass
-
Constructor Summary
ConstructorsConstructorDescriptionPooledLoOptimizer
(Class<?> returnClass, int incrementSize) Constructs aPooledLoOptimizer
. -
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.A common means to access the last value obtained from the underlying source.void
reset()
Reset the optimizer before restarting the underlying database sequence.Methods inherited from class org.hibernate.id.enhanced.AbstractOptimizer
getIncrementSize, getReturnClass
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.hibernate.id.enhanced.Optimizer
getAdjustment
-
Constructor Details
-
PooledLoOptimizer
Constructs aPooledLoOptimizer
.- 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.- Parameters:
callback
- Callback to access the underlying value source.- Returns:
- The generated identifier value.
-
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.- 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?- 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.
-
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.
- 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
-