Class SequenceDuringKeyGenerator
- java.lang.Object
-
- org.castor.cpa.persistence.sql.keygen.AbstractKeyGenerator
-
- org.castor.cpa.persistence.sql.keygen.SequenceDuringKeyGenerator
-
- All Implemented Interfaces:
KeyGenerator
public final class SequenceDuringKeyGenerator extends AbstractKeyGenerator
Implements methods specific to Sequence During Key generator. It invovles the ID generation while constructing the sql statement.- Version:
- $Revision$ $Date: 2009-07-13 17:22:43 (Tue, 28 Jul 2009) $
- Author:
- Ahmad Hassan, Ralf Joachim
-
-
Constructor Summary
Constructors Constructor Description SequenceDuringKeyGenerator(PersistenceFactory factory, java.util.Properties params, int sqlType)
Initialize the SEQUENCE key generator for DURING_INSERT stylegenerateKey(java.sql.Connection, java.lang.String, java.lang.String)
is never called.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description KeyGenerator
buildStatement(SQLEngine engine)
Builds the SQL insert statement.java.lang.Object
executeStatement(Database database, CastorConnection conn, Identity identity, ProposedEntity entity)
Executes the SQL statement after preparing the PreparedStatement.java.lang.Object
generateKey(java.sql.Connection conn, java.lang.String tableName, java.lang.String primKeyName)
Generate a new key for the specified table.boolean
isInSameConnection()
Is key generated in the same connection as INSERT? For DURING_INSERT style this method is never called.-
Methods inherited from class org.castor.cpa.persistence.sql.keygen.AbstractKeyGenerator
closeSeparateConnection, getSeparateConnection
-
-
-
-
Constructor Detail
-
SequenceDuringKeyGenerator
public SequenceDuringKeyGenerator(PersistenceFactory factory, java.util.Properties params, int sqlType) throws MappingException
Initialize the SEQUENCE key generator for DURING_INSERT stylegenerateKey(java.sql.Connection, java.lang.String, java.lang.String)
is never called.- Parameters:
factory
- A PersistenceFactory instance.params
- Database engine specific properties.sqlType
- A SQLTypidentifier.- Throws:
MappingException
- if this key generator is not compatible with the persistance factory.
-
-
Method Detail
-
generateKey
public java.lang.Object generateKey(java.sql.Connection conn, java.lang.String tableName, java.lang.String primKeyName) throws PersistenceException
Description copied from interface:KeyGenerator
Generate a new key for the specified table. This method is called when a new object is about to be created. In some environments the name of the owner of the object is known, e.g. the principal in a J2EE server. This method is never called for DURING_INSERT key generators.- Parameters:
conn
- An open connection within the given transaction.tableName
- The table name.primKeyName
- The primary key name.- Returns:
- A new key.
- Throws:
PersistenceException
- An error occured talking to persistent storage.
-
isInSameConnection
public boolean isInSameConnection()
Is key generated in the same connection as INSERT? For DURING_INSERT style this method is never called.- Returns:
- {code}True{code} If this instance is in same JDBC Connection.
-
buildStatement
public KeyGenerator buildStatement(SQLEngine engine)
Builds the SQL insert statement.- Parameters:
engine
- SQL engine for all persistence operations at entities of the type this class is responsible for. Holds all required information of the entity type.- Returns:
- KeyGenerator
-
executeStatement
public java.lang.Object executeStatement(Database database, CastorConnection conn, Identity identity, ProposedEntity entity) throws PersistenceException
Executes the SQL statement after preparing the PreparedStatement.- Parameters:
database
- A database instance.conn
- CastorConnection holding connection and PersistenceFactory to be used to create statement.identity
- Identity of the object to insert.entity
- Entity instance from which field values to be fetached to bind with sql insert statement.- Returns:
- Identity
- Throws:
PersistenceException
- If failed to insert record into database. This could happen if a database access error occurs, If identity size mismatches, unable to retrieve Identity, If provided Identity is null, If Extended engine is null.
-
-