<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    午后星期午

    hibernate annotation 之 主鍵生成策略

    Hibernate 默認總共支持 13 種生成策略 :

    1. increment        2.  identity        3. sequence

    4. hilo                  5. seqhilo         6. uuid

    7. uuid.hex          8. guid             9. native

    10. assigned       11. select         12. foreign        13. sequence-identity

     

    下面介紹幾個較為常用的策略 :

    ① identity [ 自然遞增 ]

             支持 DB2,MySQL,SQL Server,Sybase 和HypersonicSQL 數據庫, 用于為 long 或 short 或 int 類型生成唯一標識。它依賴于底層不同的數據庫,
           與 Hibernate 和 程序員無關。

    注解示例 :

    @Id

    @GenericGenerator(name = "idGenerator", strategy = "identity")

    @GeneratedValue(generator = "idGenerator")

     

    ② sequence [ 序列 ]

    支持 Oracle,DB2,PostgreSql,SAPDb 等數據庫,用于為 long 或 short 或 int 類型生成唯一標識。它需要底層數據庫的支持,
           并由數據庫來維護這個 sequence 序列。

    注解示例 :

    @Id

       @GenericGenerator(name = "idGenerator", strategy = "sequence",

    parameters = {@Parameter(name = "sequence",value="seq_name")})

       @GeneratedValue(generator = "idGenerator")

    注意 : 該策略要求設定序列名,否則 hibernate 將無法找到,這將引致拋出異常 :

    org.hibernate.exception.SQLGrammarException: could not get next sequence value

     

    ③ native

             需底層數據庫的支持,對于 MySQL,SQL Server 采用 identity 的生成策略,對于 Oracle,則采用 sequence 策略。

    注解示例 :

    @Id

       @GenericGenerator(name = "idGenerator", strategy = "native")

       @GeneratedValue(generator = "idGenerator")

     

    ④ increment [ 自然遞增 ]

           與 identity 策略不同的是,該策略不依賴于底層數據庫,而依賴于 hibernate 本身,用于為 long 或 short 或 int 類型生成唯一標識。
           主鍵計數器是由 hibernate 的一個實例來維護,每次自增量為 1,但在集群下不能使用該策略,
           否則將引起主鍵沖突的情況,該策略適用于所有關系型數據庫使用。

    注解示例 :

           @Id

       @GenericGenerator(name = "idGenerator", strategy = "increment")

       @GeneratedValue(generator = "idGenerator")

     

    ⑤ uuid [ 32位16進制數的字符串 ]

             采用128位UUID算法生成主鍵,能夠保證網絡環境下的主鍵唯一性,也就能夠保證在不同數據庫及不同服務器下主鍵的唯一性。
           uuid 最終被編碼成一個32位16進制數的字符串,
           占用的存儲空間較大。用于為 String 類型生成唯一標識,適用于所有關系型數據庫。

    注解示例 :

           @Id

       @GenericGenerator(name = "idGenerator", strategy = "uuid")

       @GeneratedValue(generator = "idGenerator")

     

    ⑤ assigned [ 手工分配主鍵ID值 ]

           該策略要求程序員必須自己維護和管理主鍵,當有數據需要存儲時,程序員必須自己為該數據分配指定一個主鍵ID值,
           如果該數據沒有被分配主鍵ID值或分配的值存在重復,則該數據都將無法被持久化且會引起異常的拋出。

    注解示例 :

           @Id

       @GenericGenerator(name = "idGenerator", strategy = "assigned")

       @GeneratedValue(generator = "idGenerator")


     [轉載出處:http://www.tkk7.com/fancydeepin ]

    posted on 2013-12-31 13:29 午后星期午 閱讀(87) 評論(0)  編輯  收藏 所屬分類: JavaEE

    主站蜘蛛池模板: 亚洲精品夜夜夜妓女网| 又黄又爽一线毛片免费观看| 亚洲精品乱码久久久久久蜜桃不卡| 精品国产亚洲AV麻豆| 日韩精品免费一区二区三区| 亚洲偷偷自拍高清| 免费看a级黄色片| 精品国产日韩亚洲一区在线| 亚洲午夜精品久久久久久浪潮| 一级一级毛片免费播放| 精品亚洲一区二区三区在线播放| 美女巨胸喷奶水视频www免费| 亚洲中文无韩国r级电影| 成人av片无码免费天天看| 亚洲另类激情综合偷自拍图| 鲁丝片一区二区三区免费| 亚洲国产成人片在线观看无码| 久久午夜羞羞影院免费观看| 亚洲国产精品成人综合久久久| 一二三四免费观看在线电影| 久久久亚洲精华液精华液精华液| 亚洲日本韩国在线| 久久免费视频观看| 亚洲一区二区三区免费观看| 国产伦一区二区三区免费| 成人免费av一区二区三区| 亚洲美女中文字幕| 免费v片视频在线观看视频| 国产成人无码精品久久久免费| 久久久久亚洲精品成人网小说| 国产成人精品免费视| 中文字幕无码亚洲欧洲日韩| 免费一级大黄特色大片| 光棍天堂免费手机观看在线观看| 亚洲欧洲自拍拍偷综合| 免费v片在线观看品善网| 男人j进入女人j内部免费网站| 亚洲五月综合缴情婷婷| 亚洲日韩在线观看免费视频| 亚洲免费视频在线观看| 国产亚洲日韩在线a不卡|