6.8 プライマリキー値の自動採番

プライマリキー採番機能とは,エンティティオブジェクトを使用してレコードを挿入する際に,プライマリキー値を自動で生成する機能です。この機能によって,ユーザがプライマリキー値を指定しなくても一意の値が格納されるようになります。Cosminexus JPAプロバイダでは,プライマリキー採番機能を提供しています。

プライマリキー値の生成方法
プライマリキー値の生成方法には次の4種類があります。
  • TABLE
    プライマリキー値を保存しておくためのテーブルを使用して,プライマリキー値を生成する方法です。
  • SEQUENCE
    データベースのシーケンスオブジェクトを使用して,プライマリキー値を生成する方法です。ただし,データベースにHiRDBを使用している場合,Cosminexus JPAプロバイダではTABLEと同じ処理を実施します。
  • IDENTITY
    データベースのidentity列を利用してプライマリキー値を生成する方法です。ただし,Cosminexus JPAプロバイダでは,使用しているデータベースの種類によって動作が異なります。
    HiRDBの場合,TABLEと同じ処理を実施します。
    Oracleの場合,SEQUENCEと同じ処理を実施します。
  • AUTO
    使用しているデータベースに適した生成方法を選択します。Cosminexus JPAプロバイダでは,HiRDBの場合,Oracleの場合ともにTABLEを選択します。
プライマリキー値が採番されるタイミング
Cosminexus JPAプロバイダの場合,flush操作またはトランザクションのコミットのタイミングでプライマリキー値が採番されます。
プライマリキー値の生成方法がSEQUENCEの場合の例
プライマリキー値の生成方法がSEQUENCEの場合の例を示します。この例では,事前にEMP_SEQという名称のシーケンスオブジェクトが作成されているものとします。

@Entity
public class Employee {
・・・
   @SequenceGenerator(
       name="EMPLOYEE_GENERATOR",
       sequenceName="EMP_SEQ"

   )
   @Id
   @GeneratedValue(strategy=GenerationType.SEQUENCE,
generator="EMPLOYEE_GENERATOR")
   @Column(name="EMPLOYEE_ID")
   public Integer getId() {
       return id;
   }
・・・
}