@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 があります。