org.apache.cayenne.dba.openbase
Class OpenBasePkGenerator

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

public class OpenBasePkGenerator
extends JdbcPkGenerator

Since:
1.1

Field Summary
 
Fields inherited from class org.apache.cayenne.dba.JdbcPkGenerator
DEFAULT_PK_CACHE_SIZE, pkCache, pkCacheSize
 
Constructor Summary
protected OpenBasePkGenerator()
          Deprecated. since 3.0
protected OpenBasePkGenerator(JdbcAdapter adapter)
           
 
Method Summary
protected  boolean canCreatePK(DbEntity entity)
           
 void createAutoPk(DataNode node, List dbEntities)
          Generates necessary database objects to provide automatic primary key support.
 List createAutoPkStatements(List dbEntities)
          Returns a list of SQL strings needed to generates database objects to provide automatic primary support for the list of entities.
protected  String createPKString(DbEntity entity)
          Returns a String to create PK support for an entity.
protected  String createUniquePKIndexString(DbEntity entity)
          Returns a String to create a unique index on table primary key columns per OpenBase recommendations.
 void dropAutoPk(DataNode node, List dbEntities)
          Drops table named "AUTO_PK_SUPPORT" if it exists in the database.
 List dropAutoPkStatements(List dbEntities)
          Returns an empty list, since OpenBase doesn't support this operation.
 Object generatePk(DataNode node, DbAttribute pk)
          Returns a non-repeating primary key for a given PK attribute.
 Object generatePkForDbEntity(DataNode node, DbEntity entity)
          Deprecated. since 3.0
 int getPkCacheSize()
          Returns zero, since PK caching is not feasible with OpenBase PK generation mechanism.
protected  long longPkFromDatabase(DataNode node, DbEntity entity)
          Generates new (unique and non-repeating) primary key for specified DbEntity.
protected  String newIDString(DbEntity ent)
          Returns SQL string that can generate new (unique and non-repeating) primary key for specified DbEntity.
protected  int pkFromDatabase(DataNode node, DbEntity entity)
          Deprecated. since 3.0
 void reset()
          Resets any cached primary keys forcing generator to go to the database next time id generation is requested.
 void setPkCacheSize(int pkCacheSize)
          Sets the size of the entity primary key cache.
 
Methods inherited from class org.apache.cayenne.dba.JdbcPkGenerator
autoPkTableExists, binaryPK, dropAutoPkString, getAdapter, pkCreateString, pkDeleteString, pkSelectString, pkTableCreateString, pkUpdateString, runUpdate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

OpenBasePkGenerator

protected OpenBasePkGenerator()
Deprecated. since 3.0


OpenBasePkGenerator

protected OpenBasePkGenerator(JdbcAdapter adapter)
Method Detail

generatePkForDbEntity

public Object generatePkForDbEntity(DataNode node,
                                    DbEntity entity)
                             throws Exception
Deprecated. since 3.0

Returns a non-repeating primary key for a given entity. Since OpenBase-specific mechanism is used, key caching is disabled. Instead a database operation is performed on every call.

Specified by:
generatePkForDbEntity in interface PkGenerator
Overrides:
generatePkForDbEntity in class JdbcPkGenerator
entity - DbEntity for which automatic PK is generated.
Throws:
Exception

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

pkFromDatabase

protected int pkFromDatabase(DataNode node,
                             DbEntity entity)
                      throws Exception
Deprecated. since 3.0

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:
pkFromDatabase in class JdbcPkGenerator
Throws:
Exception

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 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 createAutoPkStatements(List 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 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 dropAutoPkStatements(List 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


Copyright © 2001-2011 Apache Cayenne. All Rights Reserved.