歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Hibernate之id標簽的generator

Hibernate之id標簽的generator

日期:2017/3/1 10:04:32   编辑:Linux編程

Hibernate id的generator

1.increment

自增序列,由hibernate維護。初始值為1,只支持int long和short。不適合多線程並發更新數據庫,適合單一進程訪問數據庫。不能用於群集環境

2. identity

與底層數據庫有關,要求數據庫支持identify,如MySQL中是auto_increment,SQL Server中是Identify.支持的數據庫有MySQL,SQL Server,DB2,Sybase和HypersonicSQL.只支持int long和short

3. sequence

需要底層數據庫的支持序列,支持序列的數據庫有DB2,PostgreSQL,Oracle,SAPDB等。只支持int long和short

4. hilo

通過hilo算法生成主鍵,要求當前數據庫裡有表hibernate_unique_key,並且只有一個int類型字段next_hi,必須有一行數據,而且不能更改。能保證同一個數據庫中主鍵的唯一性,但不能保證多個數據庫之間主鍵的唯一性。hilo主鍵生成方式由Hibernate維護,所以hilo方式與底層數據庫無關。但不應該手動修改hi/lo算法使用的表的值,否則會引起主建重復的異常

5. seqhilo

使用方法與hilo方式類似,通過hi/lo算法生成主鍵,但要求底層數據庫支持sequence,如Oracle,DB2

6. uuid

通過一種算法生成string類型32位的主鍵,保證生成的主鍵唯一。

生成主鍵例子: 8acca38b1c3625bf011c3625c2920001

7. guid

一種特殊的算法。支持SQL Server,MySQL. 在使用SQL Server時,表定義中的字段的類型指定為uniqueidentifier

(到現在我還沒找到比較好的解釋)

8. native

根據不同的底層數據庫,采用不同的主鍵生成方式。如MySQL使用Idetify方式,Oracle使用Sequence方式,項目中如果用到多個數據庫時,可以使用native方式

9. assigned

主鍵由程序自己維護,一個持久類在被save()前必須手動指派一個主鍵

10. select

retrieves a primary key assigned by a database trigger by selecting the row by some unique key and retrieving the primary key value.

官方文檔原文如上,沒看明白。以後找到了網上的解釋再更新

11. foreign

用於一對一關聯映射。

12. sequence-identity

放這吧,什麼時候知道什麼意思了再寫上,估計平時用的極少

Copyright © Linux教程網 All Rights Reserved