hibernateプライマリ・キー生成ポリシー1


識別子属性の生成ポリシー
Hibernateマッピングファイル(*.hbm.xml)の要素は、永続化クラスの識別子属性名、タイプ、およびデータベース・テーブルのフィールドへのマッピングを定義し、サブ要素は、現在の永続化クラスの識別子属性の生成ポリシーを設定するために使用されます.永続化オブジェクトは、次のコードに示すように、データベース・テーブル内のレコードに対応します.テーブル内のレコードをより永続化するには、要素のclassプロパティ設定で使用する識別子プロパティ生成ポリシーが必要です.

 
  1. <id name="id" type="java.lang.Integer" column="ID">  
  2.     <generator class="increment">  
  3.     </generator>  
  4. </id> 

要素は、識別子属性の生成に必要な1つ以上のパラメータを渡すために要素のオプションのサブ要素です.
Hibernateには複数の識別子属性生成ポリシーが内蔵、必要を満たすことができなければorgを実現することもできる.hibernate.id.IdentifiierGeneratorインタフェースは、識別子属性生成ポリシーをカスタマイズします.
3.3.1 increment生成ポリシー
Hibernateがデータベース・テーブルに新しいレコードを挿入する準備をしている場合は、まずデータベース・テーブルから現在のプライマリ・キー・フィールドの最大値を取得し、最大値に1を加えて現在の永続化オブジェクトの識別子属性値とします.このポリシーはincrement生成ポリシーであり、生成された識別子属性のタイプはlong、short、intおよびそのパッケージクラスのタイプであってもよい.
このプライマリ・キー生成ポリシーは、単一サーバのHibernateアプリケーションに適しており、データベースもこのHibernateアプリケーションによってのみ享受されます.そうでなければ、生成された識別子属性値の一意性は保証されません.すなわち、この識別子属性生成ポリシーは、非共有データベースまたは分散型Hibernateアプリケーションには適していません.
この識別子属性を使用してポリシーを生成する構成例は、次のとおりです.

 
  1. <id name="id" type="java.lang.Integer" column="ID">  
  2.     <generator class="increment">  
  3.     </generator>  
  4. </id>    

identity生成ポリシー
MS SQL Server、MySQL、DB 2などのデータベースでは、テーブル内のフィールドの数値が自動的に増加するように設定できます.identity生成ポリシーは、現在のレコードにプライマリ・キー値を取得しながら、永続化オブジェクトに識別子属性値を付与します.
この生成ポリシーによって生成される識別子属性のタイプは、long、short、intおよびそのパッケージクラスのタイプであってもよい.
この識別子属性を使用してポリシーを生成する構成例は、次のとおりです.

 
  1. <id name="id" type="java.lang.Integer" column="ID">  
  2.     <generator class="identity">  
  3.     </generator>  
  4. </id>