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

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

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

    午后星期午

    hibernate annotation 之 主鍵生成策略

    Hibernate 默認(rèn)總共支持 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

     

    下面介紹幾個(gè)較為常用的策略 :

    ① identity [ 自然遞增 ]

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

    注解示例 :

    @Id

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

    @GeneratedValue(generator = "idGenerator")

     

    ② sequence [ 序列 ]

    支持 Oracle,DB2,PostgreSql,SAPDb 等數(shù)據(jù)庫,用于為 long 或 short 或 int 類型生成唯一標(biāo)識(shí)。它需要底層數(shù)據(jù)庫的支持,
           并由數(shù)據(jù)庫來維護(hù)這個(gè) sequence 序列。

    注解示例 :

    @Id

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

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

       @GeneratedValue(generator = "idGenerator")

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

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

     

    ③ native

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

    注解示例 :

    @Id

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

       @GeneratedValue(generator = "idGenerator")

     

    ④ increment [ 自然遞增 ]

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

    注解示例 :

           @Id

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

       @GeneratedValue(generator = "idGenerator")

     

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

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

    注解示例 :

           @Id

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

       @GeneratedValue(generator = "idGenerator")

     

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

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

    注解示例 :

           @Id

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

       @GeneratedValue(generator = "idGenerator")


     [轉(zhuǎn)載出處:http://www.tkk7.com/fancydeepin ]

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

    主站蜘蛛池模板: 亚洲伊人久久大香线蕉结合| 国产精品一区二区三区免费| 亚洲AV无码AV男人的天堂| 日本大片在线看黄a∨免费| jjizz全部免费看片| 日韩精品无码免费专区午夜不卡| 综合偷自拍亚洲乱中文字幕| 亚洲中文字幕一二三四区苍井空| 亚洲AV区无码字幕中文色| 亚洲国产成人VA在线观看| 欧美在线看片A免费观看| 久久国产精品免费观看| 国产无限免费观看黄网站| 国产成人综合亚洲一区| 亚洲熟女乱色一区二区三区 | 亚洲综合久久成人69| 在线观看亚洲精品国产| 亚洲 综合 国产 欧洲 丝袜| 岛国av无码免费无禁网站| 999在线视频精品免费播放观看| 久久国产乱子伦精品免费不卡 | 曰皮全部过程视频免费国产30分钟 | 成人久久免费网站| eeuss影院www天堂免费| 深夜久久AAAAA级毛片免费看| 亚洲国产欧洲综合997久久| 亚洲熟妇无码一区二区三区导航 | 人妻丰满熟妇无码区免费 | 亚洲AV人人澡人人爽人人夜夜| 亚洲理论电影在线观看| 最新精品亚洲成a人在线观看| 亚洲日本韩国在线| 亚洲日韩人妻第一页| 亚洲国产成人久久综合碰| 亚洲人成人网站在线观看| 亚洲精品和日本精品| 狠狠综合久久综合88亚洲| 亚洲va中文字幕无码久久不卡| 亚洲一区精品视频在线| 亚洲综合久久久久久中文字幕| 亚洲网红精品大秀在线观看|