Class OpenBasePkGenerator

java.lang.Object
org.apache.cayenne.dba.JdbcPkGenerator
org.apache.cayenne.dba.openbase.OpenBasePkGenerator
All Implemented Interfaces:
PkGenerator

public class OpenBasePkGenerator
extends JdbcPkGenerator
Since:
1.1
  • Constructor Details

    • OpenBasePkGenerator

      public OpenBasePkGenerator()
      Used by DI
      Since:
      4.1
    • OpenBasePkGenerator

      protected OpenBasePkGenerator​(JdbcAdapter adapter)
  • Method Details

    • generatePk

      public Object generatePk​(DataNode node, DbAttribute pk) throws Exception
      Returns a non-repeating primary key for a given PK attribute. Since OpenBase-specific mechanism is used, key caching is disabled. Instead a database operation is performed on every call.
      Specified by:
      generatePk in interface PkGenerator
      Overrides:
      generatePk in class JdbcPkGenerator
      Throws:
      Exception
      Since:
      3.0
    • longPkFromDatabase

      protected long longPkFromDatabase​(DataNode node, DbEntity entity) throws Exception
      Generates new (unique and non-repeating) primary key for specified DbEntity. Executed SQL looks like this:
        NEWID FOR Table Column
       

      COLUMN must be marked as UNIQUE in order for this to work properly.

      Overrides:
      longPkFromDatabase in class JdbcPkGenerator
      Throws:
      Exception
      Since:
      3.0
    • newIDString

      protected String newIDString​(DbEntity ent)
      Returns SQL string that can generate new (unique and non-repeating) primary key for specified DbEntity. No actual database operations are performed.
      Since:
      1.2
    • createAutoPk

      public void createAutoPk​(DataNode node, List<DbEntity> dbEntities) throws Exception
      Description copied from interface: PkGenerator
      Generates necessary database objects to provide automatic primary key support.
      Specified by:
      createAutoPk in interface PkGenerator
      Overrides:
      createAutoPk in class JdbcPkGenerator
      Parameters:
      node - node that provides access to a DataSource.
      dbEntities - a list of entities that require primary key auto-generation support
      Throws:
      Exception
    • createAutoPkStatements

      public List<String> createAutoPkStatements​(List<DbEntity> dbEntities)
      Description copied from interface: PkGenerator
      Returns a list of SQL strings needed to generates database objects to provide automatic primary support for the list of entities. No actual database operations are performed.
      Specified by:
      createAutoPkStatements in interface PkGenerator
      Overrides:
      createAutoPkStatements in class JdbcPkGenerator
    • canCreatePK

      protected boolean canCreatePK​(DbEntity entity)
    • dropAutoPk

      public void dropAutoPk​(DataNode node, List<DbEntity> dbEntities) throws Exception
      Description copied from class: JdbcPkGenerator
      Drops table named "AUTO_PK_SUPPORT" if it exists in the database.
      Specified by:
      dropAutoPk in interface PkGenerator
      Overrides:
      dropAutoPk in class JdbcPkGenerator
      Parameters:
      node - node that provides access to a DataSource.
      dbEntities - a list of entities whose primary key auto-generation support should be dropped.
      Throws:
      Exception
    • dropAutoPkStatements

      public List<String> dropAutoPkStatements​(List<DbEntity> dbEntities)
      Returns an empty list, since OpenBase doesn't support this operation.
      Specified by:
      dropAutoPkStatements in interface PkGenerator
      Overrides:
      dropAutoPkStatements in class JdbcPkGenerator
    • createPKString

      protected String createPKString​(DbEntity entity)
      Returns a String to create PK support for an entity.
    • createUniquePKIndexString

      protected String createUniquePKIndexString​(DbEntity entity)
      Returns a String to create a unique index on table primary key columns per OpenBase recommendations.
    • reset

      public void reset()
      Description copied from interface: PkGenerator
      Resets any cached primary keys forcing generator to go to the database next time id generation is requested. May not be applicable for all generator implementations.
      Specified by:
      reset in interface PkGenerator
      Overrides:
      reset in class JdbcPkGenerator
    • getPkCacheSize

      public int getPkCacheSize()
      Returns zero, since PK caching is not feasible with OpenBase PK generation mechanism.
      Overrides:
      getPkCacheSize in class JdbcPkGenerator
    • setPkCacheSize

      public void setPkCacheSize​(int pkCacheSize)
      Description copied from class: JdbcPkGenerator
      Sets the size of the entity primary key cache. If pkCacheSize parameter is less than 1, cache size is set to "one".

      Note that our tests show that setting primary key cache value to anything much bigger than 20 does not give any significant performance increase. Therefore it does not make sense to use bigger values, since this may potentially create big gaps in the database primary key sequences in cases like application crashes or restarts.

      Overrides:
      setPkCacheSize in class JdbcPkGenerator