8.8 プライマリキー値の自動採番
プライマリキー採番機能とは,エンティティオブジェクトを使用してレコードを挿入する際に,プライマリキー値を自動で生成する機能です。この機能によって,ユーザがプライマリキー値を指定しなくても一意の値が格納されるようになります。CJPAプロバイダでは,プライマリキー採番機能を提供しています。
- プライマリキー値の生成方法
-
プライマリキー値の生成方法には次の4種類があります。
-
TABLE
プライマリキー値を保存しておくためのテーブルを使用して,プライマリキー値を生成する方法です。
-
SEQUENCE
データベースのシーケンスオブジェクトを使用して,プライマリキー値を生成する方法です。ただし,データベースにHiRDBを使用している場合,CJPAプロバイダではTABLEと同じ処理を実施します。
-
IDENTITY
データベースのidentity列を利用してプライマリキー値を生成する方法です。ただし,CJPAプロバイダでは,使用しているデータベースの種類によって動作が異なります。
HiRDBの場合,TABLEと同じ処理を実施します。
Oracleの場合,SEQUENCEと同じ処理を実施します。
-
AUTO
使用しているデータベースに適した生成方法を選択します。CJPAプロバイダでは,HiRDBの場合,Oracleの場合ともにTABLEを選択します。
-
- プライマリキー値が採番されるタイミング
-
CJPAプロバイダの場合,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; } ・・・ }