Class TableJDBCSeq

java.lang.Object
org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq
org.apache.openjpa.jdbc.kernel.TableJDBCSeq
All Implemented Interfaces:
JDBCSeq, Seq, Configurable, Closeable
Direct Known Subclasses:
ClassTableJDBCSeq, ValueTableJDBCSeq

public class TableJDBCSeq extends AbstractJDBCSeq implements Configurable
JDBCSeq implementation that uses a database table for sequence number generation. This base implementation uses a single row for a global sequence number.
Author:
Abe White
  • Field Details

  • Constructor Details

    • TableJDBCSeq

      public TableJDBCSeq()
  • Method Details

    • getTable

      public String getTable()
      The sequence table name. Defaults to OPENJPA_SEQUENCE_TABLE. By default, the table will be placed in the first schema listed in your openjpa.jdbc.Schemas property, or in the default schema if the property is not given. If you specify a table name in the form <schema>.<table>, then the given schema will be used.
    • setTable

      public void setTable(String name)
      The sequence table name. Defaults to OPENJPA_SEQUENCE_TABLE. By default, the table will be placed in the first schema listed in your openjpa.jdbc.Schemas property, or in the default schema if the property is not given. If you specify a table name in the form <schema>.<table>, then the given schema will be used.
    • setTableName

      @Deprecated public void setTableName(String name)
      Deprecated.
      Use setTable(java.lang.String). Retained for backwards-compatibility with auto-configuration.
    • getSequenceColumn

      public String getSequenceColumn()
      The name of the column that holds the sequence value. Defaults to SEQUENCE_VALUE.
    • setSequenceColumn

      public void setSequenceColumn(String sequenceColumn)
      The name of the column that holds the sequence value. Defaults to SEQUENCE_VALUE.
    • getPrimaryKeyColumn

      public String getPrimaryKeyColumn()
      The name of the table's primary key column. Defaults to ID.
    • getPrimaryKeyColumnIdentifier

      public DBIdentifier getPrimaryKeyColumnIdentifier()
    • setPrimaryKeyColumn

      public void setPrimaryKeyColumn(String primaryKeyColumn)
      The name of the table's primary key column. Defaults to ID.
    • getAllocate

      public int getAllocate()
      Return the number of sequences to allocate for each update of the sequence table. Sequence numbers will be grabbed in blocks of this value to reduce the number of transactions that must be performed on the sequence table.
    • setAllocate

      public void setAllocate(int alloc)
      Return the number of sequences to allocate for each update of the sequence table. Sequence numbers will be grabbed in blocks of this value to reduce the number of transactions that must be performed on the sequence table.
    • getInitialValue

      public int getInitialValue()
      Return the number as the initial number for the GeneratedValue.TABLE strategy to start with.
      Returns:
      an initial number
    • setInitialValue

      public void setInitialValue(int intValue)
      Set the initial number in the table for the GeneratedValue.TABLE strategy to use as initial number.
      Parameters:
      intValue - . The initial number
    • setUniqueColumns

      public void setUniqueColumns(String columnNames)
      Sets the names of the columns on which a unique constraint is set.
      Parameters:
      columnsNames - are passed as a single String concatenated with a '|' character. This method parses it back to array of Strings.
    • getUniqueColumns

      public String getUniqueColumns()
    • setIncrement

      @Deprecated public void setIncrement(int inc)
      Deprecated.
      Use setAllocate(int). Retained for backwards compatibility of auto-configuration.
    • getConfiguration

      public JDBCConfiguration getConfiguration()
      Description copied from class: AbstractJDBCSeq
      Return the JDBCConfiguration for this sequence.
      Specified by:
      getConfiguration in class AbstractJDBCSeq
    • setConfiguration

      public void setConfiguration(Configuration conf)
      Description copied from interface: Configurable
      Invoked prior to setting bean properties.
      Specified by:
      setConfiguration in interface Configurable
    • startConfiguration

      public void startConfiguration()
      Description copied from interface: Configurable
      Invoked before bean property configuration is begun on this object.
      Specified by:
      startConfiguration in interface Configurable
    • endConfiguration

      public void endConfiguration()
      Description copied from interface: Configurable
      Invoked upon completion of bean property configuration for this object.
      Specified by:
      endConfiguration in interface Configurable
    • addSchema

      public void addSchema(ClassMapping mapping, SchemaGroup group)
      Description copied from class: AbstractJDBCSeq
      No-op.
      Specified by:
      addSchema in interface JDBCSeq
      Overrides:
      addSchema in class AbstractJDBCSeq
    • nextInternal

      protected Object nextInternal(JDBCStore store, ClassMapping mapping) throws Exception
      Description copied from class: AbstractJDBCSeq
      Return the next sequence object.
      Specified by:
      nextInternal in class AbstractJDBCSeq
      Throws:
      Exception
    • currentInternal

      protected Object currentInternal(JDBCStore store, ClassMapping mapping) throws Exception
      Description copied from class: AbstractJDBCSeq
      Return the current sequence object. By default returns the last sequence value used, or null if no sequence values have been requested yet. Default implementation is not threadsafe.
      Overrides:
      currentInternal in class AbstractJDBCSeq
      Throws:
      Exception
    • allocateInternal

      protected void allocateInternal(int count, JDBCStore store, ClassMapping mapping) throws SQLException
      Description copied from class: AbstractJDBCSeq
      Allocate additional sequence values. Does nothing by default.
      Overrides:
      allocateInternal in class AbstractJDBCSeq
      Throws:
      SQLException
    • getStatus

      protected TableJDBCSeq.Status getStatus(ClassMapping mapping)
      Return the appropriate status object for the given class, or null if cannot handle the given class. The mapping may be null.
    • addPrimaryKeyColumn

      protected Column addPrimaryKeyColumn(Table table)
      Add the primary key column to the given table and return it.
    • getPrimaryKey

      protected Object getPrimaryKey(ClassMapping mapping)
      Return the primary key value for the sequence table for the given class.
    • getSequence

      protected long getSequence(ClassMapping mapping, Connection conn) throws SQLException
      Get the current sequence value.
      Parameters:
      mapping - ClassMapping of the entity whose sequence value will be obtained.
      conn - Connection used issue SQL statements.
      Returns:
      The current sequence value, or SEQUENCE_NOT_FOUND if the sequence could not be found.
      Throws:
      SQLException
    • setSequence

      protected boolean setSequence(ClassMapping mapping, TableJDBCSeq.Status stat, int inc, boolean updateStatSeq, Connection conn) throws SQLException
      Grabs the next handful of sequence numbers.
      Returns:
      true if the sequence was updated, false if no sequence row existed for this mapping
      Throws:
      SQLException
    • resolveTableName

      @Deprecated public String resolveTableName(ClassMapping mapping, Table table)
      Deprecated.
      Resolve a fully qualified table name
      Parameters:
      class - mapping to get the schema name
    • resolveTableIdentifier

      public DBIdentifier resolveTableIdentifier(ClassMapping mapping, Table table)
      Resolve a fully qualified table name
      Parameters:
      class - mapping to get the schema name
    • refreshTable

      public void refreshTable() throws SQLException
      Creates the sequence table in the DB.
      Throws:
      SQLException
    • dropTable

      public void dropTable() throws SQLException
      Drops the sequence table in the DB.
      Throws:
      SQLException
    • main

      public static void main(String[] args) throws Exception
      Usage: java org.apache.openjpa.jdbc.schema.TableJDBCSequence [option]* -action/-a <add | drop | get | set> [value] Where the following options are recognized.
      • -properties/-p <properties file or resource>: The path or resource name of a OpenJPA properties file containing information such as the license key and connection data as outlined in JDBCConfiguration. Optional.
      • -<property name> <property value>: All bean properties of the OpenJPA JDBCConfiguration can be set by using their names and supplying a value. For example: -licenseKey adslfja83r3lkadf
      The various actions are as follows.
      • add: Create the sequence table.
      • drop: Drop the sequence table.
      • get: Print the current sequence value.
      • set: Set the sequence value.
      Throws:
      Exception
    • run

      public static boolean run(JDBCConfiguration conf, String[] args, Options opts) throws Exception
      Run the tool. Returns false if invalid options were given.
      Throws:
      Exception
    • run

      public static boolean run(JDBCConfiguration conf, String[] args, String action) throws Exception
      Run the tool. Return false if an invalid option was given.
      Throws:
      Exception
    • prepareStatement

      protected PreparedStatement prepareStatement(Connection conn, SQLBuffer buf) throws SQLException
      This method is to provide override for non-JDBC or JDBC-like implementation of preparing statement.
      Throws:
      SQLException
    • executeUpdate

      protected int executeUpdate(JDBCConfiguration conf, Connection conn, PreparedStatement stmnt, SQLBuffer buf, int opcode) throws SQLException
      This method is to provide override for non-JDBC or JDBC-like implementation of executing update.
      Throws:
      SQLException
    • executeQuery

      protected ResultSet executeQuery(JDBCConfiguration conf, Connection conn, PreparedStatement stmnt, SQLBuffer buf) throws SQLException
      This method is to provide override for non-JDBC or JDBC-like implementation of executing query.
      Throws:
      SQLException
    • getSequence

      protected long getSequence(ResultSet rs, DBDictionary dict) throws SQLException
      This method is to provide override for non-JDBC or JDBC-like implementation of getting sequence from the result set.
      Throws:
      SQLException
    • setUniqueConstraintName

      public void setUniqueConstraintName(String uniqueConstraintName)
    • setUniqueConstraintName

      public void setUniqueConstraintName(DBIdentifier uniqueConstraintName)
    • getUniqueConstraintName

      public String getUniqueConstraintName()
    • getUniqueConstraintIdentifier

      public DBIdentifier getUniqueConstraintIdentifier()