Package org.hibernate.reactive.id.impl
Class TableReactiveIdentifierGenerator
- java.lang.Object
-
- org.hibernate.reactive.id.impl.BlockingIdentifierGenerator
-
- org.hibernate.reactive.id.impl.TableReactiveIdentifierGenerator
-
- All Implemented Interfaces:
java.io.Serializable
,org.hibernate.boot.model.relational.ExportableProducer
,org.hibernate.generator.BeforeExecutionGenerator
,org.hibernate.generator.Generator
,org.hibernate.id.Configurable
,org.hibernate.id.IdentifierGenerator
,ReactiveIdentifierGenerator<java.lang.Long>
- Direct Known Subclasses:
EmulatedSequenceReactiveIdentifierGenerator
public class TableReactiveIdentifierGenerator extends BlockingIdentifierGenerator implements org.hibernate.id.IdentifierGenerator
Support for JPA'sTableGenerator
. Persistence is managed via a table which may hold multiple rows distinguished by a "segment" column value.This implementation supports block allocation, but does not guarantee that generated identifiers are sequential.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String
renderedTableName
protected java.lang.String
segmentColumnName
protected java.lang.String
valueColumnName
-
Constructor Summary
Constructors Constructor Description TableReactiveIdentifierGenerator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.String
buildInsertQuery()
protected java.lang.String
buildSelectQuery()
protected java.lang.String
buildUpdateQuery()
void
configure(org.hibernate.type.Type type, java.util.Properties params, org.hibernate.service.ServiceRegistry serviceRegistry)
protected java.lang.String
determineDefaultSegmentValue(java.util.Properties params)
protected int
determineIncrement(java.util.Properties params)
protected int
determineInitialValue(java.util.Properties params)
protected java.lang.String
determineSegmentColumnName(java.util.Properties params, org.hibernate.engine.jdbc.env.spi.JdbcEnvironment jdbcEnvironment)
protected java.lang.String
determineSegmentValue(java.util.Properties params)
protected java.lang.Boolean
determineStoreLastUsedValue(org.hibernate.service.ServiceRegistry serviceRegistry)
protected java.lang.String
determineTableName(org.hibernate.type.Type type, java.util.Properties params, org.hibernate.service.ServiceRegistry serviceRegistry)
protected java.lang.String
determineValueColumnNameForTable(java.util.Properties params, org.hibernate.engine.jdbc.env.spi.JdbcEnvironment jdbcEnvironment)
java.lang.Object
generate(org.hibernate.engine.spi.SharedSessionContractImplementor session, java.lang.Object object)
protected int
getBlockSize()
The block size (the number of "lo" values for each "hi" value)void
initialize(org.hibernate.boot.model.relational.SqlStringGenerationContext context)
protected java.lang.Object[]
insertParameters(long insertedValue)
protected java.util.concurrent.CompletionStage<java.lang.Long>
nextHiValue(ReactiveConnectionSupplier session)
Allocate a new block, by obtaining the next "hi" value from the databasevoid
registerExportables(org.hibernate.boot.model.relational.Database database)
protected java.lang.Object[]
selectParameters()
protected java.lang.Object[]
updateParameters(long currentValue, long updatedValue)
-
Methods inherited from class org.hibernate.reactive.id.impl.BlockingIdentifierGenerator
generate
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.generator.BeforeExecutionGenerator
generatedOnExecution
-
-
-
-
Method Detail
-
getBlockSize
protected int getBlockSize()
Description copied from class:BlockingIdentifierGenerator
The block size (the number of "lo" values for each "hi" value)- Specified by:
getBlockSize
in classBlockingIdentifierGenerator
-
nextHiValue
protected java.util.concurrent.CompletionStage<java.lang.Long> nextHiValue(ReactiveConnectionSupplier session)
Description copied from class:BlockingIdentifierGenerator
Allocate a new block, by obtaining the next "hi" value from the database- Specified by:
nextHiValue
in classBlockingIdentifierGenerator
-
configure
public void configure(org.hibernate.type.Type type, java.util.Properties params, org.hibernate.service.ServiceRegistry serviceRegistry)
- Specified by:
configure
in interfaceorg.hibernate.id.Configurable
- Specified by:
configure
in interfaceorg.hibernate.id.IdentifierGenerator
-
registerExportables
public void registerExportables(org.hibernate.boot.model.relational.Database database)
- Specified by:
registerExportables
in interfaceorg.hibernate.boot.model.relational.ExportableProducer
- Specified by:
registerExportables
in interfaceorg.hibernate.id.IdentifierGenerator
-
initialize
public void initialize(org.hibernate.boot.model.relational.SqlStringGenerationContext context)
- Specified by:
initialize
in interfaceorg.hibernate.id.IdentifierGenerator
-
generate
public java.lang.Object generate(org.hibernate.engine.spi.SharedSessionContractImplementor session, java.lang.Object object) throws org.hibernate.HibernateException
- Specified by:
generate
in interfaceorg.hibernate.id.IdentifierGenerator
- Throws:
org.hibernate.HibernateException
-
determineStoreLastUsedValue
protected java.lang.Boolean determineStoreLastUsedValue(org.hibernate.service.ServiceRegistry serviceRegistry)
-
determineTableName
protected java.lang.String determineTableName(org.hibernate.type.Type type, java.util.Properties params, org.hibernate.service.ServiceRegistry serviceRegistry)
-
determineSegmentColumnName
protected java.lang.String determineSegmentColumnName(java.util.Properties params, org.hibernate.engine.jdbc.env.spi.JdbcEnvironment jdbcEnvironment)
-
determineValueColumnNameForTable
protected java.lang.String determineValueColumnNameForTable(java.util.Properties params, org.hibernate.engine.jdbc.env.spi.JdbcEnvironment jdbcEnvironment)
-
determineSegmentValue
protected java.lang.String determineSegmentValue(java.util.Properties params)
-
determineDefaultSegmentValue
protected java.lang.String determineDefaultSegmentValue(java.util.Properties params)
-
determineInitialValue
protected int determineInitialValue(java.util.Properties params)
-
determineIncrement
protected int determineIncrement(java.util.Properties params)
-
updateParameters
protected java.lang.Object[] updateParameters(long currentValue, long updatedValue)
-
insertParameters
protected java.lang.Object[] insertParameters(long insertedValue)
-
selectParameters
protected java.lang.Object[] selectParameters()
-
buildSelectQuery
protected java.lang.String buildSelectQuery()
-
buildUpdateQuery
protected java.lang.String buildUpdateQuery()
-
buildInsertQuery
protected java.lang.String buildInsertQuery()
-
-