java.lang.Object | ||
↳ | org.hibernate.id.enhanced.OptimizerFactory.OptimizerSupport | |
↳ | org.hibernate.id.enhanced.OptimizerFactory.HiLoOptimizer |
Optimizer which applies a 'hilo' algorithm in memory to achieve optimization.
A 'hilo' algorithm is simply a means for a single value stored in the database to represent a "bucket" of possible, contiguous values. The database value identifies which particular bucket we are on. This database value must be paired with another value that defines the size of the bucket; the number of possible values available. TheincrementSize
serves this purpose. The
naming here is meant more for consistency in that this value serves the
same purpose as the increment supplied to the OptimizerFactory.PooledOptimizer
.
The general algorithms used to determine the bucket are:upperLimit = (databaseValue * incrementSize) + 1
lowerLimit = upperLimit - 1
upperLimit = (1 * 20) + 1 = 21
lowerLimit = 21 - 20 = 1
upperLimit = (2 * 20) + 1 = 41
lowerLimit = 41 - 20 = 21
[Expand]
Inherited Fields | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.hibernate.id.enhanced.OptimizerFactory.OptimizerSupport
|
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Getter for property 'upperLimit'.
| |||||||||||
Getter for property 'lastValue'.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
org.hibernate.id.enhanced.OptimizerFactory.OptimizerSupport
| |||||||||||
From class
java.lang.Object
| |||||||||||
From interface
org.hibernate.id.enhanced.Optimizer
|
Getter for property 'upperLimit'.
Exposure intended for testing purposes.Getter for property 'lastValue'.
Exposure intended for testing purposes.