[JPA]プライマリ・キー生成ポリシー


プライマリ・キーのマッピング方法


基本キーマッピング法には大きな直接割り当てと自己相似性がある.
直接配属がいいかどうかはわかりませんが、弟の姓を中心に書いてみたいと思います.

子弟の姓


同世代からのアプローチは大きく3つあります.
IDENTITY:プライマリ・キーの作成をデータベースに委任
SEQUENCE:データベース・シーケンスの使用
TABLE:鍵を使用したテーブルの生成
まず、IDENTITYとSEQUENCEはデータベースに従属します.
Oracleデータベースでは、シーケンスが提供されているため、SEQUENCE方式を使用できますが、Mysqlにはシーケンスが存在しないため、AUTO INCREMENT機能を使用します.
TABLEの場合は、鍵テーブルを作成してシーケンスのように使用する方法なので、すべてのデータベースで使用できます.

IDENTITY戦略


これは、プライマリ・キー生成をデータベースに委任するポリシーです.Mysqlを使用してToyプロジェクトを行い、Mysqlに対してIDENTITYポリシーを使用します.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
コードは前述のように記述すればよい.
IDENTITYポリシーは、データベースにデータを挿入し、デフォルトのキー値をクエリーします.
したがって、識別子を割り当てるにはデータベースをクエリーする必要があり、jdbc 3はStatementを使用します.getGeneratedKey()メソッドを使用すると、データを保存しながら同時に生成されるプライマリ・キー値を取得できます.△ヘブネットもこの方法を使っているそうです.
エンティティには永続的な識別子が必要ですが、IDENTITYポリシーは識別子を取得するためにデータベースに格納する必要があります.したがって、書き込み遅延は発生しません.

n/a.結論


プライマリ・キー生成ポリシー
ちょくせつわりあて
同姓:IDENTITY、SEQUENCE、TABLE
SEQUENCEやTABLEはまだ使っていないので、後で機会があったら整理しておきたいと思います.

リファレンス


Java ORM標準JPAプログラミング-金英漢