hibernate的主鍵建置原則,hibernate主鍵策略

來源:互聯網
上載者:User

hibernate的主鍵建置原則,hibernate主鍵策略
在hibernate中的對應檔中的標籤<generator>子項目是一個Java類的名字, 用來為該持久化類的執行個體產生唯一的標識。如果這個產生器執行個體需要某些配置值或者初始化參數, 用<param>元素來傳遞。 

<id name="id" type="Integer" column="id">
        <generator class="org.hibernate.id.TableHiLoGenerator">
                <param name="table">main_id</param>
                <param name="column">hi_value_column</param>
        </generator>
</id>
所有的產生器都實現org.hibernate.id.IdentifierGenerator介面。 這是一個非常簡單的介面;某些應用程式可以選擇提供他們自己特定的實現。當然, Hibernate提供了很多內建的實現。
下面是一些內建產生器的快捷名字:

1.increment 
主鍵按數值順序遞增。此方式的實現機製為在當前應用執行個體中維持一個變數,以儲存著當前的最大值,之後每次需要產生主鍵的時候將此值加1作為主鍵。用於為long, short或者int類型產生 唯一標識。只有在沒有其他進程往同一張表中插入資料時才能使用。這種方式可能產生的問題是:不能在叢集下使用。

2.identity 
對DB2,MySQL, MS SQL Server, Sybase和HypersonicSQL的內建識別欄位提供支援。 返回的標識符是long, short 或者int類型的。 

3.sequence 
在DB2,PostgreSQL, Oracle, SAP DB, McKoi中使用序列(sequence), 而在Interbase中使用產生器(generator)。返回的標識符是long, short或者 int類型的。 

4.hilo 
使用一個高/低位演算法高效的產生long, short 或者 int類型的標識符。給定一個表和欄位(預設分別是 hibernate_unique_key 和next_hi)作為高位值的來源。 高/低位演算法產生的標識符只在一個特定的資料庫中是唯一的。 

5.seqhilo 
使用一個高/低位演算法來高效的產生long, short 或者 int類型的標識符,給定一個資料庫序列(sequence)的名字。 

6.uuid 
用一個128-bit的UUID演算法產生字串類型的標識符, 這在一個網路中是唯一的(使用了IP地址)。UUID被編碼為一個32位16進位數位字串。 

7.guid 
在MS SQL Server 和 MySQL 中使用資料庫產生的GUID字串。 

8.native 
根據底層資料庫的能力選擇identity, sequence 或者hilo中的一個。 

9.assigned 
讓應用程式在save()之前為對象分配一個標示符。這是 <generator>元素沒有指定時的預設建置原則。 

10.select 
通過資料庫觸發器選擇一些唯一主鍵的行並返回主鍵值來分配一個主鍵。 

11.foreign 
使用另外一個相關聯的對象的標識符。通常和<one-to-one>聯合起來使用。 

12.sequence-identity 
一種特別的序列建置原則,使用資料庫序列來產生實際值,但將它和JDBC3的getGeneratedKeys結合在一起,使得在插入語句執行的時候就返回產生的值。目前為止只有面向JDK 1.4的Oracle 10g

驅動支援這一策略。注意,因為Oracle驅動程式的一個bug,這些插入語句的注釋被關閉了。(原文:Note comments on these insert statements are disabled due to a bug in the Oracle drivers.)




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.