(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...