Hibernate框架的主鍵生成策略

2022-07-13 01:51:12 字數 1335 閱讀 2822

在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宣告該列的列明,當列明於...