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
放這吧,什麼時候知道什麼意思了再寫上,估計平時用的極少