在hibernate中,id元素的子元素用於生成持久化類的物件的唯一識別符號,也就是主鍵。hibernate框架中定義了許多主鍵生成策略類,也叫生成器類。所有的生成器類都實現了org.hibernate.id.identifiergenerator介面。通過實現identifiergenerator介面來建立自己的生成器類。hibernate框架提供了許多內建的生成器類:
1、assigned
如果沒有使用元素,assigned是預設的生成器策略。在這種情況下,應用程式為物件分配id。
2、increment
當沒有其他程序將資料插入此表時,它才會生成唯一的id。它生成short,int或long型識別符號。第乙個生成的識別符號通常為1,然後每次遞增為1。
3.、sequencce
它使用資料庫的順序序列。如果沒有定義序列,它會自動建立乙個序列。在oracle資料庫的情況下,它將建立乙個名為hibernate_sequence的序列。在db2、sap db、postgre sql 或mckoi的情況下,它使用序列(sequence),但在interbase中使用生成器。使用sequence型別時,元素中藥使用子元素指定序列名稱。
........h_test
........
4.hilo
它使用高低演算法來生成short,int和long型別的id。
5、native
它使用標識、序列或希洛取決於資料庫**商。
6、indentity
它用於sybase、mysql、ms sql server、db2和hypersonic sql 支援id列。返回的id型別為short、int或long。
7、seqhilo
它在指定的序列名稱上使用高低演算法。返回的id型別為short、int和long。
8.uuid
它使用128位uuid演算法生成id。返回的id是string型別,在網路中是唯一的(因為使用了ip)。uuid以十六進製制數字標識,長度為32。
9、guid
它使用由字串型別的資料庫生成的guid。它適用於ms sql server 和mysql。
10、select
它使用資料庫觸發器返回主鍵。
11、foreign
它使用另乙個關聯物件的id,主要用於一對一關聯。
12、sequence-identity
它使用特殊的序列生成策略。僅在oracle 10g驅動程式中支援。
備註:hilo和seqhilo生成策略的高低演算法即hi/lo演算法。hi:高值------從資料庫取得的那個值;lo:低值------hibernate自動維護,取值1到max_low;max_low:對映檔案中配置的那個值。
Hibernate主鍵的設定
1 適用於mysql,mssql 自動增長identity oracle不支援自動增長,但是支援序列,所以,這個方法一般用於mysql,mssql generator class identity generator 要想在hibernate中配置oracle的主鍵,需要用到序列 2 序列seque...
hibernate的幾種主鍵
public class generator extends hibernateutil hibernate insert into person name,id values 1 表必須支援自動增長機制 在mysql中加入autoincrement 2 主鍵的產生是資料庫產生的,並不是由hiber...
Hibernate主鍵對映
實體類最好有主鍵,並有對應的getter setter方法,這是hibernate推薦的,主鍵盡量可以為null值的型別,例如integer string long等,而不要使用int long等 配置主鍵 hibernate中用 id宣告該列為主鍵列,同時使用 column宣告該列的列明,當列明於...