初學Hibernate主鍵生成策略

2021-09-08 11:14:34 字數 1483 閱讀 7335

具有業務含義的主鍵叫自然主鍵;隨機生成,不具備業務含義的字段作為主鍵,叫**主鍵。

在表與pojo類關係對映檔案***.hbm.xml中,可通過配置id元素下generator節點的class屬性指定資料表主鍵生成策略;所謂主鍵生成策略就是hibernate怎樣管理表的主鍵

主鍵生成策略:1~4自動增長(1、2、3······),**主鍵;5主鍵為字串,**主鍵;6一般用於自然主鍵,需要在程式裡指定主鍵值,無法自動生成

1、increment;代表主鍵是自動增長的,是由hibernate本身來管理。

注意:資料庫要支援自動增長,如mysql,sqlserver;oracle不可以;在多執行緒情況下,可能會產生主鍵衝突問題

2、identity;由底層資料庫生成,不由hibernate本身來管理

注意:資料庫支援自動增長,如mysql,sqlserver;oracle不可以;   

3、sequence;識別符號生成器利用底層資料庫提供的序列來生成識別符號

注意:資料庫支援序列,和hibernate程式無關,如oracle支援,而mysql就不可以;如oracle資料庫有序列customer_seq,則配置如:customer_seq

4、native;識別符號依據底層資料庫對自動生成識別符號的支援能力,來選擇使用identity,sequence,或hilo識別符號生成器,如mysql自動選擇identity,oracle自動選擇sequence

5、uuid;主鍵是字串的可以用uuid來處理,隨機產生32字串

6、assigned;一般用於自然主鍵,無法自動生成,需要程式指定值

7、復合主鍵;需要在配置檔案裡指定復合主鍵id;如有person類和person表,person表有復合主鍵firstname和secondname,和age欄位

<

>

<

class

name

="cn.hjp.domain.person"

table

="person"

>

<

composite-id

>

<

key-property

name

="firstname"

>

key-property

>

<

key-property

name

="secondname"

>

key-property

>

composite-id

>

<

property

name

="age"

column

="age"

type

="int"

>

property

>

class

>

>

注意:person類必須實現序列化介面serializable

初學Hibernate主鍵生成策略

具有業務含義的主鍵叫自然主鍵 隨機生成,不具備業務含義的字段作為主鍵,叫 主鍵。在表與pojo類關係對映檔案 hbm.xml中,可通過配置id元素下generator節點的class屬性指定資料表主鍵生成策略 所謂主鍵生成策略就是hibernate怎樣管理表的主鍵 主鍵生成策略 1 4自動增長 1 ...

hibernate主鍵生成

hibernate的主鍵生成器 generator元素 表示了乙個主鍵生成器,它用來為持久化類例項生成唯一的標識 1.1 程式設計師自己控制 assigned 1.2 資料庫控制 identity 標識列 自動增長 sequence 1.3 hibernate控制 increment uuid uu...

Hibernate主鍵生成策略

hibernate主鍵生成策略 1 自動增長identity 適用於mysql db2 ms sql server,採用資料庫生成的主鍵,用於為long short int型別生成唯一標識 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援...