| com.versant.core.jdbc.JdbcKeyGenerator
All known Subclasses: com.versant.core.jdbc.sql.HighLowJdbcKeyGenerator, com.versant.core.jdbc.sql.AutoIncJdbcKeyGenerator,
JdbcKeyGenerator | public interface JdbcKeyGenerator (Code) | | These generate primary keys for new rows in tables. Instances must be
thread safe.
|
Method Summary | |
public void | addKeyGenTables(HashSet set, JdbcMetaDataBuilder mdb) Add any JdbcTable instances that this key generator requires to the
supplied set. | public void | generatePrimaryKeyPost(String className, JdbcTable classTable, Object[] data, Connection con, Statement stat) Generate a new primary key value for a new instance of the supplied
class after the row has been inserted. | public void | generatePrimaryKeyPre(String className, JdbcTable classTable, int newObjectCount, Object[] data, Connection con) Generate a new primary key value for a new instance of the supplied
class prior to the row being inserted. | public String | getPostInsertSQLSuffix(JdbcTable classTable) Get extra SQL to be appended to the insert statement. | public void | init(String className, JdbcTable classTable, Connection con) Initialize this key generator. | public boolean | isPostInsertGenerator() If the new key can only be detirmined after the new row has been
inserted (e.g. | public boolean | isRequiresOwnConnection() Does this key generator require its own connection? If it does then
one will be obtained to generate the key and committed after the
key has been generated. |
addKeyGenTables | public void addKeyGenTables(HashSet set, JdbcMetaDataBuilder mdb)(Code) | | Add any JdbcTable instances that this key generator requires to the
supplied set. This method is called once per key generator during meta
data generation. Any tables returned will be added to the meta data and
will get into SQL scripts and so on. If the same key generator
instance is returned more than once by a factory then this method
will still only be called once on the instance.
|
generatePrimaryKeyPost | public void generatePrimaryKeyPost(String className, JdbcTable classTable, Object[] data, Connection con, Statement stat) throws SQLException(Code) | | Generate a new primary key value for a new instance of the supplied
class after the row has been inserted. The values generated will be used
to populate a new OID and then set on a PreparedStatement for the
insert. This is called if isPostInsertGenerator returns true.
Parameters: className - The name of the class Parameters: classTable - The table for the class Parameters: data - The array to store the key values in. Parameters: con - Connection to the DataSource for the class. Parameters: stat - Statement created from con. Do not close it. This will havejust been used to insert the new row. throws: SQLException - on errors |
generatePrimaryKeyPre | public void generatePrimaryKeyPre(String className, JdbcTable classTable, int newObjectCount, Object[] data, Connection con) throws SQLException(Code) | | Generate a new primary key value for a new instance of the supplied
class prior to the row being inserted. The values generated will be used
to populate a new OID and then set on a PreparedStatement for the
insert. This is called if isPostInsertGenerator returns false.
The newObjectCount parameter indicates the number of new objects that
will be inserted (including this one) in the same transaction using
this key generator. This may be used to optimize the behavior of the
key generator or be ignored. The highlow key generator uses this value
instead of its grabSize to avoid executing redundant updates and
selects.
Parameters: className - The name of the class Parameters: classTable - The table for the class Parameters: newObjectCount - The number of new objects being created Parameters: data - The array to store the key values in. Parameters: con - Connection to the DataSource for the class. throws: SQLException - on errors |
getPostInsertSQLSuffix | public String getPostInsertSQLSuffix(JdbcTable classTable)(Code) | | Get extra SQL to be appended to the insert statement. This is only
called for post insert key generators. Return null if no extra SQL
is required. Key generators can use this as an alternative to running
a separate query to get the primary key for the just inserted row.
|
init | public void init(String className, JdbcTable classTable, Connection con) throws SQLException(Code) | | Initialize this key generator. This is called when the JDO Genie
server initializes before any keys are generated. Key
generators should use this to avoid popular race conditions and
deadlock opportunities (e.g. multiple 'select max(id) from table'
statements executing at the same time). If the same key generator
instance is used on more than one class this will be called once
for each class.
Parameters: className - The name of the class Parameters: classTable - The table for the class Parameters: con - Connection to the DataSource for the class |
isPostInsertGenerator | public boolean isPostInsertGenerator()(Code) | | If the new key can only be detirmined after the new row has been
inserted (e.g. if using a database autoincrement column) then this
should return true.
|
isRequiresOwnConnection | public boolean isRequiresOwnConnection()(Code) | | Does this key generator require its own connection? If it does then
one will be obtained to generate the key and committed after the
key has been generated. This is called prior to every key generation
call.
|
|
|