<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 午后星期午 閱讀(91) 評論(0)  編輯  收藏 所屬分類: JavaEE

    主站蜘蛛池模板: 黄色视频在线免费观看| 69式国产真人免费视频| 成av免费大片黄在线观看| 99精品免费观看| 国产成人免费一区二区三区| 久久国产成人精品国产成人亚洲| 亚洲国产成人超福利久久精品| 日本一区二区三区在线视频观看免费| 色猫咪免费人成网站在线观看| 国产国产成年年人免费看片| 亚洲妇女无套内射精| h视频在线观看免费网站| 2048亚洲精品国产| 亚洲中文字幕无码av| 免费无码又爽又刺激高潮视频| 亚洲处破女AV日韩精品| 免费无毒a网站在线观看| 亚洲AV日韩精品一区二区三区 | 国产成年无码久久久免费| 香蕉视频在线观看免费国产婷婷| 亚洲成色在线影院| 精品国产呦系列在线观看免费 | 亚洲精品在线观看视频| 一二三区免费视频| 免费看大黄高清网站视频在线| 亚洲AV成人精品一区二区三区| 中文字幕无码播放免费| 亚洲午夜无码久久久久软件| 全部免费国产潢色一级| 亚洲精品无码专区久久| 国产一卡二卡3卡四卡免费 | 国产亚洲国产bv网站在线| 免费人成黄页在线观看日本| 一区二区三区亚洲视频| 两个人日本WWW免费版| 精品日韩亚洲AV无码| 国产免费AV片在线观看| 亚洲一区在线观看视频| A在线观看免费网站大全| 亚洲成人在线免费观看| 国产成人免费在线|