主鍵生成策略

2021-08-11 05:11:14 字數 2740 閱讀 3944

原文:

@generatedvalue,jpa通用策略生成器 。

jpa提供的四種標準用法為table,sequence,identity,auto. 

table:使用乙個特定的資料庫**來儲存主鍵。 

sequence:根據底層資料庫的序列來生成主鍵,條件是資料庫支援序列。 

@id  

@generatedvalue(strategy = generationtype.sequence,generator="payablemoney_seq")

@sequencegenerator(name="payablemoney_seq", sequencename="seq_payment")

identity:主鍵由資料庫自動生成(主要是自動增長型) 

@id  

@generatedvalue(strategy = generationtype.identity)

auto:主鍵由程式控制。  

@id  

@generatedvalue(strategy = generationtype.auto)

@genericgenerator註解配合@generatedvalue一起使用,@generatedvalue註解中的"generator"屬性要與@genericgenerator註解中name屬性一致,strategy屬性表示hibernate的主鍵生成策略 

@id

@generatedvalue(generator="increment")

@genericgenerator(name="increment", strategy = "increment")

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "native")

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "uuid")

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "hilo")

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "assigned ")

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "identity ")

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

@generatedvalue(generator = "***")  

@genericgenerator(name = "***", strategy = "sequence", parameters =

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "increment")

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "guid")

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

@generatedvalue(generator = "***")    

@genericgenerator(name = "***", strategy = "uuid.hex")

主鍵生成策略

一共是13種,其中包括native native 對於 oracle 採用 sequence 方式,對於mysql 和 sql server 採用identity 自增主鍵生成機制 native就是將主鍵的生成工作交由資料庫完成,hibernate不管 很常用 uuid 採用128位的uuid演算法...

主鍵生成策略

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

主鍵生成策略

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