Class 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's TableGenerator. 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  
      • Fields inherited from interface org.hibernate.id.IdentifierGenerator

        CONTRIBUTOR_NAME, ENTITY_NAME, GENERATOR_NAME, JPA_ENTITY_NAME
    • 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 database
      void 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 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
      • Methods inherited from interface org.hibernate.generator.BeforeExecutionGenerator

        generatedOnExecution
      • Methods inherited from interface org.hibernate.generator.Generator

        generatesOnInsert, generatesOnUpdate, generatesSometimes
      • Methods inherited from interface org.hibernate.id.IdentifierGenerator

        generate, getEventTypes, supportsJdbcBatchInserts
    • Field Detail

      • renderedTableName

        protected java.lang.String renderedTableName
      • segmentColumnName

        protected java.lang.String segmentColumnName
      • valueColumnName

        protected java.lang.String valueColumnName
    • Constructor Detail

      • TableReactiveIdentifierGenerator

        public TableReactiveIdentifierGenerator()
    • Method Detail

      • configure

        public void configure​(org.hibernate.type.Type type,
                              java.util.Properties params,
                              org.hibernate.service.ServiceRegistry serviceRegistry)
        Specified by:
        configure in interface org.hibernate.id.Configurable
        Specified by:
        configure in interface org.hibernate.id.IdentifierGenerator
      • registerExportables

        public void registerExportables​(org.hibernate.boot.model.relational.Database database)
        Specified by:
        registerExportables in interface org.hibernate.boot.model.relational.ExportableProducer
        Specified by:
        registerExportables in interface org.hibernate.id.IdentifierGenerator
      • initialize

        public void initialize​(org.hibernate.boot.model.relational.SqlStringGenerationContext context)
        Specified by:
        initialize in interface org.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 interface org.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()