@Identity
@Identityを使用して、データベース識別とシーケンスに追加のアトリビュートを指定できます。さらに、クラスレベルまたはプロパティレベルでこれを適用できます。
@MappedBy
を使用していて、@Id
プロパティが継承される場合、クラスレベルで@Identity
を指定できると便利です。
指定できる追加のプロパティは次のとおりです。
- start - 開始値
- cache - キャッシュ値 (パフォーマンス最適化)
- generatedBy - DEFAULT または ALWAYS
クラスでの使用例
@Identity(generated = BY_DEFAULT, start = 1000, cache = 100)
@Entity
public class AuditLog {
...
プロパティでの使用例
@Entity
public class AuditLog {
@Id
@Identity(generated = BY_DEFAULT, start = 10000, cache = 1000)
long id;
...
開始値
H2、Postgres、Oracle および SQL Server シーケンスの DDL 生成では、start 値がサポートされています。
キャッシュ値
cache 値は、挿入が多いテーブルに対して一部のデータベースで利用できる重要なパフォーマンス最適化です。これにより、データベースが生成して事前にキャッシュする識別値の数を指定し、データベースが使用する内部ロックを低減できます。これをサポートするデータベースには、Postgres、Oracle、NuoDB があります。