increment
(選查找資料庫中的主鍵生成,然後再把對象insert進去)
用于為long, short或者int類型生成 唯一辨別。隻有在沒有其他程序往同一張表中插入資料時才能使用。 在叢集下不要使用。
identity
(主要用于mysql資料庫)
注:對于mysql資料庫使用遞增序列時需要在建表時對主鍵指定為auto_increment屬性。
對db2,mysql, ms sql server, sybase和hypersonicsql的内置辨別字段提供支援。 傳回的辨別符是long, short 或者int類型的。 (資料庫自增)
sequence
(主要用于oracle)
在db2,postgresql, oracle, sap db, mckoi中使用序列(sequence), 而在interbase中使用生成器(generator)。傳回的辨別符是long, short或者 int類型的。(資料庫自增)
hilo
seqhilo
使用一個高/低位算法來高效的生成long, short 或者 int類型的辨別符,給定一個資料庫序列(sequence)的名字。
uuid (字元串)
用一個128-bit的uuid算法生成字元串類型的辨別符, 這在一個網絡中是唯一的(使用了ip位址)。uuid被編碼為一個32位16進制數字的字元串,它的生成是由hibernate生成,一般不會重複。
uuid包含:ip位址,jvm的啟動時間(精确到1/4秒),系統時間和一個計數器值(在jvm中唯一)。 在java代碼中不可能獲得mac位址或者記憶體位址,是以這已經是我們在不使用jni的前提下的能做的最好實作了
string uuid = java.util.uuid.randomuuid().tostring();
guid
在ms sql server 和 mysql 中使用資料庫生成的guid字元串。
native
跨資料庫時使用,由底層方言産生。
根據底層資料庫的能力選擇identity, sequence 或者hilo中的一個。(資料庫自增)
assigned
使用者自定義id;
讓應用程式在save()之前為對象配置設定一個标示符。這是 <generator>元素沒有指定時的預設生成政策。(如果是手動配置設定,則需要設定此配置)
select
通過資料庫觸發器選擇一些唯一主鍵的行并傳回主鍵值來配置設定一個主鍵。
foreign
使用另外一個相關聯的對象的辨別符。通常和<one-to-one>聯合起來使用。
複合主鍵(聯合主鍵):多個字段構成唯一性。