org.castor.cpa.persistence.sql.keygen
Class AbstractKeyGenerator
java.lang.Object
org.castor.cpa.persistence.sql.keygen.AbstractKeyGenerator
- All Implemented Interfaces:
- KeyGenerator
- Direct Known Subclasses:
- SequenceKeyGenerator
public abstract class AbstractKeyGenerator
- extends java.lang.Object
- implements KeyGenerator
- Author:
- Stein M. Hugubakken
Method Summary |
protected void |
checkSupportedFactory(PersistenceFactory factory)
|
protected SqlTypeHandler |
getSqlTypeHandler()
|
byte |
getStyle()
Style of the key generator: BEFORE_INSERT, DURING_INSERT or AFTER_INSERT. |
protected abstract java.lang.String[] |
getSupportedFactoryNames()
|
protected void |
initSqlTypeHandler(int sqlType)
|
boolean |
isInSameConnection()
Is key generated in the same connection as INSERT?
For DURING_INSERT style this method is never called. |
java.lang.String |
patchSQL(java.lang.String insert,
java.lang.String primKeyName)
Gives a possibility to patch the Castor-generated SQL statement
for INSERT (indended mainly for DURING_INSERT style of key generators,
other key generators usually simply return the passed parameter). |
protected void |
setStyle(byte style)
|
void |
supportsSqlType(int sqlType)
Determine if the key generator supports a given sql type. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
_factory
protected PersistenceFactory _factory
_factoryName
protected java.lang.String _factoryName
AbstractKeyGenerator
public AbstractKeyGenerator()
checkSupportedFactory
protected void checkSupportedFactory(PersistenceFactory factory)
throws MappingException
- Throws:
MappingException
getSupportedFactoryNames
protected abstract java.lang.String[] getSupportedFactoryNames()
initSqlTypeHandler
protected void initSqlTypeHandler(int sqlType)
getSqlTypeHandler
protected SqlTypeHandler getSqlTypeHandler()
supportsSqlType
public void supportsSqlType(int sqlType)
throws MappingException
- Determine if the key generator supports a given sql type.
- Specified by:
supportsSqlType
in interface KeyGenerator
- Throws:
MappingException
setStyle
protected final void setStyle(byte style)
getStyle
public final byte getStyle()
- Style of the key generator: BEFORE_INSERT, DURING_INSERT or AFTER_INSERT.
- Specified by:
getStyle
in interface KeyGenerator
patchSQL
public java.lang.String patchSQL(java.lang.String insert,
java.lang.String primKeyName)
throws MappingException
- Gives a possibility to patch the Castor-generated SQL statement
for INSERT (indended mainly for DURING_INSERT style of key generators,
other key generators usually simply return the passed parameter).
The original statement contains primary key column on the first place
for BEFORE_INSERT style and doesn't contain it for the other styles.
This method is called once for each class and must return String
with '?' that can be passed to CallableStatement (for DURING_INSERT
style) or to PreparedStatement (for the others).
Then for each record being created actual field values are substituted,
starting from the primary key value for BEFORE_INSERT style, of starting
from the first of other fields for the other styles.
The DURING_INSERT key generator must add one OUT parameter to the end
of the parameter list, which will return the generated identity.
For example, ReturningKeyGenerator for Oracle8i transforms
"INSERT INTO tbl (pk, fld1, ...,fldN) VALUES (?,?...,?)" to
"INSERT INTO tbl (pk, fld1, ...) VALUES (seq.nextval,?....,?)
RETURNING pk INTO ?".
DURING_INSERT key generator also may be implemented as a stored procedure.
- Specified by:
patchSQL
in interface KeyGenerator
- Parameters:
insert
- Castor-generated INSERT statementprimKeyName
- The primary key name
- Throws:
MappingException
isInSameConnection
public boolean isInSameConnection()
- Is key generated in the same connection as INSERT?
For DURING_INSERT style this method is never called.
- Specified by:
isInSameConnection
in interface KeyGenerator
Copyright © 2011. All Rights Reserved.