<menu id="a2esi"><strong id="a2esi"></strong></menu>
  • <nav id="a2esi"></nav>
    學校總部  | 設為首頁 | 加入收藏 | 官方微信
    內威培訓
    打造“培訓+就業”一站式服務品牌!
    banner1
    • Python+AI工程師
    • Web前端工程師
    • Java軟件開發工程師

    首頁>>學員天地

    Hibernate的generator標簽詳解
    編輯:simon  閱讀:2864次  發布:13-10-01

    Hibernate mapping文件中的generator標簽用于說明對象標識生成方式,其class值主要有如下幾種。
    1、identity:自動增長,適用于MySQL、DB2、MS SQL Server,采用由底層數據庫生成標識符(自動增長),用于為long、short、int類型生成唯一標識使用SQL Server 和 MySQL 的自增字段,這個方法不能放到 Oracle 中,Oracle 不支持自增字段,要設定sequence(MySQL 和 SQL Server 中很常用)

    2、sequence:DB2、Oracle均支持的序列,用于為long、short或int生成唯一標識數。

    3、hilo:使用一個高/低位算法生成的long、short或int類型的標識符,給定一個表和字段作為高位值的來源,默認的表是hibernate_unique_key,默認的字段是next_hi。它將id的產生源分成兩部分,DB+內存,然后按照算法結合在一起產生id值,可以在很少的連接次數內產生多條記錄,提高效率。

    4、native:能根據底層數據庫系統的類型,自動選擇合適的標識符生成器,因此非常適用于跨數據庫平臺開發,即Hibernate根據底層數據庫適配器中的定義,自動采用identify,hilo,sequence的其中一種作為主鍵生成方式,但是OID必須為long,int,short類型。
        對于 oracle 采用 Sequence 方式,對于MySQL和SQL Server采用identity(自增主鍵生成機制),native就是將主鍵的生成工作交由數據庫完成,hibernate不管

    5、seqhilo:sequence和hilo的結合,hilo的高位由sequence產生,所以也需要底層數據庫的支持通過hilo算法實現,但是主鍵歷史保存在Sequence中,適用于支持 Sequence 的數據庫,如 Oracle(比較少用)

    6、increment:由Hibernate在內存中生成主鍵,每次增量為1,不依賴于底層的數據庫,因此所有的數據庫都可以使用,但問題也隨之而來,由于是Hibernate生成的,所以只能有一個Hibernate應用進程訪問數據庫,否則就會產生主鍵沖突。

    7、uuid.hex:使用一個128-bit的UUID算法生成字符串類型的標識符,UUID被編碼成一個32位16進制數字的字符串。UUID包含:IP地址、JVM啟動時間、系統時間(精確到1/4秒)和一個計數器值(JVM中唯一)hibernate會算出一個128位的唯一值插入

    8、assigned:由應用程序負責生成主鍵標識符,往往使用在數據庫中沒有代理主鍵,使用的主鍵與業務相關的情況。

    9、foreign:使用外部表的字段作為主鍵

    10、select:使用觸發器生成主鍵,主要用于早期的數據庫主鍵生成機制,現在已較少使用。



    上一篇: hibernate中mapping文件標簽詳解   下一篇: JAVA面試題2
    返回列表
    網絡大專、自考本科,學歷輕松拿!
    ©2016-2020 上海內威職業技能培訓學校 版權所有
    普陀區武寧路1500號中樓2-3層(郵編:200062)
    咨詢:021-62434966  合作:021-13371929650  就業:021-62434966  傳真:  電郵:service@snetway.com
    《中華人民共和國電信與信息服務業務》經營許可證滬ICP備15002602號 
    <menu id="a2esi"><strong id="a2esi"></strong></menu>
  • <nav id="a2esi"></nav>
    本溪娱网棋牌