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

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

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

    隨筆-126  評論-247  文章-5  trackbacks-0


    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 數(shù)據(jù)庫, 用于為 long 或 short 或 int 類型生成唯一標識。它依賴于底層不同的數(shù)據(jù)庫,
           與 Hibernate 和 程序員無關。

    注解示例 :

    @Id

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

    @GeneratedValue(generator = "idGenerator")

     

    ② sequence [ 序列 ]

    支持 Oracle,DB2,PostgreSql,SAPDb 等數(shù)據(jù)庫,用于為 long 或 short 或 int 類型生成唯一標識。它需要底層數(shù)據(jù)庫的支持,
           并由數(shù)據(jù)庫來維護這個 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

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

    注解示例 :

    @Id

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

       @GeneratedValue(generator = "idGenerator")

     

    ④ increment [ 自然遞增 ]

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

    注解示例 :

           @Id

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

       @GeneratedValue(generator = "idGenerator")

     

    ⑤ uuid [ 32位16進制數(shù)的字符串 ]

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

    注解示例 :

           @Id

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

       @GeneratedValue(generator = "idGenerator")

     

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

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

    注解示例 :

           @Id

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

       @GeneratedValue(generator = "idGenerator")




      
    posted on 2012-10-12 20:10 fancydeepin 閱讀(12853) 評論(4)  編輯  收藏

    評論:
    # re: hibernate annotation 之 主鍵生成策略 2013-12-06 20:10 | rookie
    樓主的
    ③ native

    需底層數(shù)據(jù)庫的支持,對于 MySQL,SQL Server 采用 identity 的生成策略,對于 Oracle,則采用 sequence 策略。
    注解示例 :

    @Id

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

    @GeneratedValue(generator = "idGenerator")
    請小心求證  回復  更多評論
      
    # re: hibernate annotation 之 主鍵生成策略[未登錄] 2016-04-16 23:43 | aa
    aa  回復  更多評論
      
    # re: hibernate annotation 之 主鍵生成策略[未登錄] 2016-04-16 23:43 | aa
    <script>alert('1')</script>  回復  更多評論
      
    # re: hibernate annotation 之 主鍵生成策略 2016-07-21 15:05 | 梵蒂岡
    二萬人  回復  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 在线观看免费av网站| 337p日本欧洲亚洲大胆精品555588| 最好2018中文免费视频| 亚洲电影免费在线观看| 国产一区二区免费在线| 亚洲人成电影网站免费| 日本免费xxxx色视频| 国产午夜免费高清久久影院| 国产精品免费久久| 二区久久国产乱子伦免费精品| 1000部禁片黄的免费看| 亚洲免费视频播放| MM131亚洲国产美女久久| 亚洲成av人片在线看片| 久久精品国产亚洲αv忘忧草| 国产成人精品免费视频大全| 日本成年免费网站| 亚洲精品午夜国产VA久久成人| 亚洲国产日韩精品| 精品无码无人网站免费视频| 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲国产成人久久精品影视| 亚洲狠狠狠一区二区三区| 亚洲视频一区二区在线观看| 久久久久女教师免费一区| 日韩免费人妻AV无码专区蜜桃 | 亚洲无码日韩精品第一页| 免费人成大片在线观看播放| 日韩一卡2卡3卡4卡新区亚洲| 午夜视频在线免费观看| 日本特黄特黄刺激大片免费| 亚洲专区中文字幕| 综合亚洲伊人午夜网| 久久A级毛片免费观看| 看免费毛片天天看| 亚洲一卡2卡4卡5卡6卡在线99 | 亚洲AⅤ视频一区二区三区| 亚洲激情视频在线观看| 99爱在线精品免费观看| 18亚洲男同志videos网站| 在线观看无码AV网站永久免费|