Class PooledOptimizer

java.lang.Object
org.hibernate.id.enhanced.AbstractOptimizer
org.hibernate.id.enhanced.PooledOptimizer
All Implemented Interfaces:
InitialValueAwareOptimizer, Optimizer

public class PooledOptimizer extends AbstractOptimizer implements InitialValueAwareOptimizer
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:
  • Constructor Details

    • PooledOptimizer

      public PooledOptimizer(Class<?> returnClass, int incrementSize)
      Constructs a PooledOptimizer
      Parameters:
      returnClass - The Java type of the values to be generated
      incrementSize - The increment size.
  • Method Details

    • generate

      public Serializable generate(AccessCallback callback)
      Description copied from interface: Optimizer
      Generate an identifier value accounting for this specific optimization.
      Specified by:
      generate in interface Optimizer
      Parameters:
      callback - Callback to access the underlying value source.
      Returns:
      The generated identifier value.
    • getLastSourceValue

      public IntegralDataTypeHolder 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 interface Optimizer
      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 interface Optimizer
      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

      public IntegralDataTypeHolder 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 interface InitialValueAwareOptimizer
      Parameters:
      initialValue - The initial value specified by the user, or -1 to indicate that the user did not specify an initial value.