## org.hibernate.id.enhanced
Interface Optimizer

All Known Implementing Classes:
  OptimizerFactory.HiLoOptimizer, OptimizerFactory.LegacyHiLoAlgorithmOptimizer, OptimizerFactory.NoopOptimizer, OptimizerFactory.OptimizerSupport, OptimizerFactory.PooledLoOptimizer, OptimizerFactory.PooledOptimizer

    public interface Optimizer

Performs optimization on an optimizable identifier generator. Typically this optimization takes the form of trying to ensure we do not have to hit the database on each and every request to get an identifier value.

Optimizers work on constructor injection. They should provide a constructor with the following arguments

1. java.lang.Class - The return type for the generated values
2. int - The increment size

Author:
  Steve Ebersole

Method Summary
`boolean` `applyIncrementSizeToSourceValues()` Are increments to be applied to the values stored in the underlying value source?
`Serializable` `generate(AccessCallback callback)` Generate an identifier value accounting for this specific optimization.
`int` `getIncrementSize()` Retrieves the defined increment size.
`IntegralDataTypeHolder` `getLastSourceValue()` A common means to access the last value obtained from the underlying source.

Method Detail

### generate

    Serializable generate(AccessCallback callback)

  Generate an identifier value accounting for this specific optimization.

  Parameters:
    `callback` - Callback to access the underlying value source.
  Returns:
    The generated identifier value.

### getLastSourceValue

    IntegralDataTypeHolder getLastSourceValue()

  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.

### getIncrementSize

    int getIncrementSize()

  Retrieves the defined increment size.

  Returns:
    The increment size.

### applyIncrementSizeToSourceValues

    boolean applyIncrementSizeToSourceValues()

  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 is totally an in memory construct.

Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.