org.springframework.jdbc.support.incrementer
Class MySQLMaxValueIncrementer

java.lang.Object
  extended by org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer
      extended by org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer
All Implemented Interfaces:
InitializingBean, DataFieldMaxValueIncrementer

public class MySQLMaxValueIncrementer
extends AbstractDataFieldMaxValueIncrementer

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.

Author:
Isabelle Muszynski, Jean-Pierre Pawlak, Thomas Risberg

Field Summary
 
Fields inherited from class org.springframework.jdbc.support.incrementer.AbstractDataFieldMaxValueIncrementer
paddingLength
 
Constructor Summary
MySQLMaxValueIncrementer()
          Default constructor.
MySQLMaxValueIncrementer(DataSource ds, String incrementerName, 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.
 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(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

MySQLMaxValueIncrementer

public MySQLMaxValueIncrementer()
Default constructor.


MySQLMaxValueIncrementer

public MySQLMaxValueIncrementer(DataSource ds,
                                String incrementerName,
                                String columnName)
Convenience constructor.

Parameters:
ds - the DataSource to use
incrementerName - the name of the sequence/table to use
columnName - the name of the column in the sequence table to use
Method Detail

setColumnName

public void setColumnName(String columnName)
Set the name of the column in the sequence table.


getColumnName

public String getColumnName()
Return the name of the column in the sequence table.


setCacheSize

public void setCacheSize(int cacheSize)
Set the number of buffered keys.


getCacheSize

public int getCacheSize()
Return the number of buffered keys.


afterPropertiesSet

public void afterPropertiesSet()
Description copied from interface: InitializingBean
Invoked by a BeanFactory after it has set all bean properties supplied (and satisfied BeanFactoryAware and ApplicationContextAware).

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.

Specified by:
afterPropertiesSet in interface InitializingBean
Overrides:
afterPropertiesSet in class AbstractDataFieldMaxValueIncrementer

getNextKey

protected long getNextKey()
                   throws DataAccessException
Description copied from class: AbstractDataFieldMaxValueIncrementer
Determine the next key to use, as a long.

Specified by:
getNextKey in class AbstractDataFieldMaxValueIncrementer
Returns:
the key to use as a long. It will eventually be converted later in another format by the public concrete methods of this class.
Throws:
DataAccessException


Copyright (c) 2002-2006 The Spring Framework Project.