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

3798 ワード

プライマリ・キー生成ポリシー
プライマリ・キー生成ポリシーとは、プライマリ・キー列値を自動的に生成するポリシーです.
JPAは4つのプライマリ・キー生成ポリシーを提供しています
  • IDENTITY:ID自己成長ポリシー.IDの自己成長をサポートするデータベースにのみ使用できます.
  • @Id
    //IDENTITY      ID     ,      ID       
    @GeneratedValue(strategy=GenerationType.IDENTITY)
        @Column(name="cust_id")  
        private Long custId;// '    (  )', 
  • SEQUENCE:シーケンス生成ポリシー.SEQUENCEポリシーの使用を指定します.HIbernateのxmlと同じです.MySQLでテーブルシミュレーションシーケンスを使用する場合、Oracleで直接シーケンスを使用する場合.Oracleなどのシーケンス・データベースで使用します.
  • @Id
    /**
     * strategy:       
     * generator:           
     */
    @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq_cust")
    /**
     * @SequenceGenerator:               
     * name:      
     * allocationSize:  
     * initialValue:     
     * sequenceName:   (   MySQL            )
     */
    @SequenceGenerator(name="seq_cust",allocationSize=1,initialValue=1,sequenceName="seq_customer")
    //  ,          ,     @Column
    @Column(name="cust_id")  
    private Long custId;// '    (  )',
  • TABLEポリシーは、どのデータベースでもテーブルを使用してシーケンスをシミュレートします.(理解)1つのテーブルを作成するたびに別のシーケンステーブルを生成するのは面倒だから
  • .
    @Id
    /**
     * strategy:       
     * generator:           
     * TABLE  :                   。
     *   MySQL      ,  TABLE   SEQUENCE   。
     */
    @GeneratedValue(strategy=GenerationType.TABLE,generator="table_cust")
    /**
     * @TableGenerator:      TABLE         
     * name:      ,     ,   @GeneratedValue  
     * allocationSize:  ,      
     * initialValue:     ,ID         +1
     *      1  ,     0.
     * sequenceName:   (   MySQL            )
    *   :         +1
     */
    @TableGenerator(name="table_cust",allocationSize=1,initialValue=0,table="seq_customer")
    //  ,          ,     @Column
    @Column(name="cust_id")  
    private Long custId;// '    (  )',
  • AUTO(了解):フレームワークによって異なるデータベースに基づいてポリシーを指定します.結果の不定性のため.ほとんど誰も使っていません.、時々Tableポリシーが生成されますが、
  • はあまりにも固定されていません.
    @Id
    /**
     * strategy:       
     * generator:           
     */
    @GeneratedValue(strategy=GenerationType.AUTO)
    //  ,          ,     @Column
    @Column(name="cust_id")  
    private Long custId;// '    (  )',