クラス DerbyMaxValueIncrementer

実装されたすべてのインターフェース:
InitializingBeanDataFieldMaxValueIncrementer

public class DerbyMaxValueIncrementer extends AbstractIdentityColumnMaxValueIncrementer
指定された Derby テーブルの最大値を、自動インクリメント列と同等の値でインクリメントする 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 getGeneratedKeys メソッドをサポートしているため、テーブル内で IDENTITY 列を直接使用し、その後 JdbcTemplate の update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) メソッドを呼び出すときに KeyHolder を利用することをお勧めします。

Endre Stolsvik の提案に感謝します。

導入:
2.5
作成者:
Thomas Risberg, Juergen Hoeller