主鍵生成策略

2021-07-11 23:36:16 字數 1280 閱讀 1174

一共是13種,其中包括native

native: 對於 oracle 採用 sequence 方式,對於mysql 和 sql server 採用identity(自增主鍵生成機制),native就是將主鍵的生成工作交由資料庫完成,hibernate不管(很常用)。

uuid: 採用128位的uuid演算法生成主鍵,uuid被編碼為乙個32位16進製制數字的字串。占用空間大(字串型別)。

hilo: 使用hilo生成策略,要在資料庫中建立一張額外的表,預設表名為hibernate_unique_key,預設欄位為integer型別,名稱是next_hi(比較少用)。

assigned: 在插入資料的時候主鍵由程式處理(很常用),這是 元素沒有指定時的預設生成策略。等同於jpa中的auto。

identity: 使用sql server 和 mysql 的自增欄位,這個方法不能放到 oracle 中,oracle 不支援自增字段,要設定sequence(mysql 和 sql server 中很常用)。 等同於jpa中的indentity。

select: 使用觸發器生成主鍵(主要用於早期的資料庫主鍵生成機制,少用)。

sequence: 呼叫底層資料庫的序列來生成主鍵,要設定序列名,不然hibernate無法找到。

seqhilo: 通過hilo演算法實現,但是主鍵歷史儲存在sequence中,適用於支援 sequence 的資料庫,如 oracle(比較少用)

increment: 插入資料的時候hibernate會給主鍵新增乙個自增的主鍵,但是乙個hibernate例項就維護乙個計數器,所以在多個例項執行的時候不能使用這個方法。

foreign: 使用另外乙個相關聯的物件的主鍵。通常和聯合起來使用。

guid: 採用資料庫底層的guid演算法機制,對應mysql的uuid()函式,sql server的newid()函式,oracle的rawtohex(sys_guid())函式等。

uuid.hex: 看uuid,建議用uuid替換。

sequence-identity: sequence策略的擴充套件,採用立即檢索策略來獲取sequence值,需要jdbc3.0和jdk4以上(含1.4)版本

hibernate提供了多種生成器供選擇,基於annotation的方式通過@genericgenerator實現.

hibernate每種主鍵生成策略提供介面org.hibernate.id.identifiergenerator的實現類,如果要實現自定義的主鍵生成策略也必須實現此介面.

主鍵生成策略

原文 generatedvalue,jpa通用策略生成器 jpa提供的四種標準用法為table,sequence,identity,auto.table 使用乙個特定的資料庫 來儲存主鍵。sequence 根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。id generatedvalue st...

主鍵生成策略

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

主鍵生成策略

在建立資料庫的時候,需要為每張表指定乙個主鍵,所謂主鍵就是能夠 唯一標識表中某一行的屬性或屬性組,乙個表只能有乙個主鍵,但可以有多個候選索引。因為主鍵可以唯一標識某一行記錄,所以可以確保執行資料更新 刪除的時 候不會出現張冠李戴的錯誤。資料庫的主鍵生成有多種方式,每種方式都有其優點和缺點,應該根據不...