|
|||||||||||
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.MySQLMaxValueIncrementer
Class to increment maximum value of a given MySQL table with the equivalent of an auto-increment column. Note: If you use this class, your MySQL key column should NOT be auto-increment, as the sequence table does the job.
The sequence is kept in a table; there should be one sequence table per table that needs an auto-generated key. The table type of the sequence table should be MyISAM so the sequences are allocated without regard to any transactions that might be in progress.
Example:
create table tab (id int unsigned not null primary key, text varchar(100));
create table tab_sequence (value int not null) type=MYISAM;
insert into tab_sequence values(0);
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.
Field Summary |
Fields inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer |
paddingLength |
Constructor Summary | |
MySQLMaxValueIncrementer()
Default constructor. |
|
MySQLMaxValueIncrementer(javax.sql.DataSource ds,
java.lang.String incrementerName,
java.lang.String columnName)
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. |
java.lang.String |
getColumnName()
Return the name of the column in the sequence table. |
protected long |
getNextKey()
Determine the next key to use, as a long. |
void |
setCacheSize(int cacheSize)
Set the number of buffered keys. |
void |
setColumnName(java.lang.String columnName)
Set the name of the column in the sequence table. |
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 MySQLMaxValueIncrementer()
public MySQLMaxValueIncrementer(javax.sql.DataSource ds, java.lang.String incrementerName, java.lang.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 useMethod Detail |
public void setColumnName(java.lang.String columnName)
public java.lang.String getColumnName()
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
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |