hibernate註解主鍵生成策略

2021-08-14 11:08:22 字數 2729 閱讀 4041

@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")

Hibernate 註解 主鍵生成策略

1 hibernate註解 annoation 使用id主鍵生成主要要使用到以下幾個註解 id,generatedvalue,genericgenerator。generatedvalue的作用是jpa的預設實現自定義主鍵生成策略,genericgenerator是hibernate在jpa的基礎上...

hibernate註解主鍵生成策略

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

hibernate主鍵生成

hibernate的主鍵生成器 generator元素 表示了乙個主鍵生成器,它用來為持久化類例項生成唯一的標識 1.1 程式設計師自己控制 assigned 1.2 資料庫控制 identity 標識列 自動增長 sequence 1.3 hibernate控制 increment uuid uu...