Hibernate的主鍵生成策略

2021-07-31 05:05:20 字數 813 閱讀 2063

(1)自然主鍵:建表的時候,使用物件中本身的屬性作為表的主鍵。

(2)**主鍵:沒有使用物件中的自身的屬性作為表中的主鍵,使用和物件不相關的屬性作為主鍵。

注:在建表的時候,建議使用**主鍵,自然主鍵有可能會參與到業務邏輯中,有可能出現重複或者有的時候需要修改,主鍵不能修改,因此自然主鍵就不能使用了。

主鍵不應該由使用者自己輸入,而是由程式生成。

(1)increment

自動增長,使用的是

hibernate

中提供的自動增長機制,適應於short,int,long。hibernate底層使用查詢一下表中主鍵的最大值。select  max(cust id ) from customer,然後將id+1作為當前的主鍵。

問題:在集群中不要使用

(2)identity

自動增長。使用的是資料庫的自動增長機制。使用於有自動增長機制的機器。oracle沒有自動這增長功能。

(3)sequence

序列,使用的是序列的方式完成資料庫的主鍵的生成)(oracle和db2可以使用)

(4)native

本地策略,根據資料庫不同自動選擇

identity

和sequence。

(5)uuid

適用於字串型別的主鍵,產生乙個隨機的字串。

(6)assigned

hibernate不管理主鍵,使用者手動設定主鍵的值

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 不支援...

Hibernate主鍵生成策略

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