|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer org.springframework.jdbc.support.incrementer.DerbyMaxValueIncrementer
public class DerbyMaxValueIncrementer
Class to increment maximum value of a given Derby table with the equivalent of an auto-increment column. Note: If you use this class, your Derby key column should NOT be defined as an IDENTITY column, as the sequence table does the job. Thanks to Endre Stolsvik for the suggestion!
The sequence is kept in a table. There should be one sequence table per table that needs an auto-generated key.
Derby requires an additional column to be used for the insert since it is impossible to insert a null into the identity column and have the value generated. This is solved by providing the name of a dummy column that also must be created in the sequence table.
Example:
create table tab (id int not null primary key, text varchar(100)); create table tab_sequence (value int generated always as identity, dummy char(1)); insert into tab_sequence (dummy) values(null);If cacheSize is set, the intermediate values are served without querying the database. If the server or your application is stopped or crashes or a transaction is rolled back, the unused values will never be served. The maximum hole size in numbering is consequently the value of cacheSize. HINT: Since Derby supports the JDBC 3.0 method getGeneratedKeys it's recommended to use IDENTITY columns directly in the tables and then utilizing a
KeyHolder
when calling the with the update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) method of
the JdbcTemplate
.
Field Summary |
---|
Fields inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer |
---|
paddingLength |
Constructor Summary | |
---|---|
DerbyMaxValueIncrementer()
Default constructor. |
|
DerbyMaxValueIncrementer(DataSource ds,
String incrementerName,
String columnName)
Convenience constructor. |
|
DerbyMaxValueIncrementer(DataSource ds,
String incrementerName,
String columnName,
String dummyName)
Convenience constructor. |
Method Summary | |
---|---|
void |
afterPropertiesSet()
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware). |
int |
getCacheSize()
Return the number of buffered keys. |
String |
getColumnName()
Return the name of the column in the sequence table. |
String |
getDummyName()
Return the name of the dummy column. |
protected long |
getNextKey()
Determine the next key to use, as a long. |
void |
setCacheSize(int cacheSize)
Set the number of buffered keys. |
void |
setColumnName(String columnName)
Set the name of the column in the sequence table. |
void |
setDummyName(String dummyName)
Set the name of the dummy column. |
Methods inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer |
---|
getDataSource, getIncrementerName, getPaddingLength, nextIntValue, nextLongValue, nextStringValue, setDataSource, setIncrementerName, setPaddingLength |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public DerbyMaxValueIncrementer()
public DerbyMaxValueIncrementer(DataSource ds, String incrementerName, String columnName)
ds
- the DataSource to useincrementerName
- the name of the sequence/table to usecolumnName
- the name of the column in the sequence table to usepublic DerbyMaxValueIncrementer(DataSource ds, String incrementerName, String columnName, String dummyName)
ds
- the DataSource to useincrementerName
- the name of the sequence/table to usecolumnName
- the name of the column in the sequence table to usedummyName
- the name of the dummy column used for insertsMethod Detail |
---|
public void setColumnName(String columnName)
public String getColumnName()
public void setDummyName(String dummyName)
public String getDummyName()
public void setCacheSize(int cacheSize)
public int getCacheSize()
public void afterPropertiesSet()
InitializingBean
This method allows the bean instance to perform initialization only possible when all bean properties have been set and to throw an exception in the event of misconfiguration.
afterPropertiesSet
in interface InitializingBean
afterPropertiesSet
in class AbstractDataFieldMaxValueIncrementer
protected long getNextKey() throws DataAccessException
AbstractDataFieldMaxValueIncrementer
getNextKey
in class AbstractDataFieldMaxValueIncrementer
DataAccessException
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |