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