public class DerbyMaxValueIncrementer extends AbstractIdentityColumnMaxValueIncrementer
DataFieldMaxValueIncrementer
。注: このクラスを使用する場合、シーケンステーブルが機能するため、Derby キー列を IDENTITY 列として定義しないでください。シーケンスはテーブルに保持されます。自動生成キーを必要とするテーブルごとに 1 つのシーケンステーブルが必要です。
ID 列に null を挿入して値を生成することは不可能であるため、Derby では挿入に追加の列を使用する必要があります。これは、シーケンステーブルにも作成する必要があるダミー列の名前を指定することで解決します。
例:
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);"cacheSize" が設定されている場合、データベースを照会せずに中間値が提供されます。サーバーまたはアプリケーションが停止またはクラッシュしたり、トランザクションがロールバックされたりすると、未使用の値は提供されません。番号付けの最大ホールサイズは cacheSize の値になります。 ヒント : Derby は JDBC 3.0
getGeneratedKeys
メソッドをサポートしているため、テーブルで直接 IDENTITY 列を使用し、JdbcTemplate
の update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder)
メソッドで呼び出すときに KeyHolder
を使用することをお勧めします。Endre Stolsvik の提案に感謝します。
paddingLength
コンストラクターと説明 |
---|
DerbyMaxValueIncrementer() Bean プロパティスタイルの使用のデフォルトコンストラクター。 |
DerbyMaxValueIncrementer(DataSourceSE dataSource, StringSE incrementerName, StringSE columnName) 便利なコンストラクター。 |
DerbyMaxValueIncrementer(DataSourceSE dataSource, StringSE incrementerName, StringSE columnName, StringSE dummyName) 便利なコンストラクター。 |
修飾子と型 | メソッドと説明 |
---|---|
StringSE | getDummyName() ダミー列の名前を返します。 |
protected StringSE | getIdentityStatement() 現在の ID 値を取得するために使用するステートメント。 |
protected StringSE | getIncrementStatement() 「シーケンス」値をインクリメントするために使用するステートメント。 |
void | setDummyName(StringSE dummyName) ダミー列の名前を設定します。 |
getDeleteStatement, getNextKey, isDeleteSpecificValues, setDeleteSpecificValues
afterPropertiesSet, getCacheSize, getColumnName, setCacheSize, setColumnName
getDataSource, getIncrementerName, getPaddingLength, nextIntValue, nextLongValue, nextStringValue, setDataSource, setIncrementerName, setPaddingLength
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
public DerbyMaxValueIncrementer()
public DerbyMaxValueIncrementer(DataSourceSE dataSource, StringSE incrementerName, StringSE columnName)
dataSource
- 使用する DataSourceincrementerName
- 使用するシーケンス / テーブルの名前 columnName
- 使用するシーケンステーブルの列の名前 public DerbyMaxValueIncrementer(DataSourceSE dataSource, StringSE incrementerName, StringSE columnName, StringSE dummyName)
dataSource
- 使用する DataSourceincrementerName
- 使用するシーケンス / テーブルの名前 columnName
- 使用するシーケンステーブルの列の名前 dummyName
- 挿入に使用されるダミー列の名前 public void setDummyName(StringSE dummyName)
public StringSE getDummyName()
protected StringSE getIncrementStatement()
AbstractIdentityColumnMaxValueIncrementer
AbstractIdentityColumnMaxValueIncrementer
の getIncrementStatement
protected StringSE getIdentityStatement()
AbstractIdentityColumnMaxValueIncrementer
AbstractIdentityColumnMaxValueIncrementer
の getIdentityStatement