通過annotation來對映hibernate實體的,基於annotation的hibernate主鍵標識為@id,
其生成規則由@generatedvalue設定的.這裡的@id和@generatedvalue都是jpa的標準用法,
jpa提供四種標準用法,由@generatedvalue的源**可以明顯看出.
其中generationtype:target()
@retention(runtime)
public @inte***ce generatedvalue
jpa提供的四種標準用法為table,sequence,identity,auto. 1.sequencepublic
enum generationtype
實體類中的註解
@sequencegenerator定義@id
@generatedvalue(strategy =generationtype.sequence,generator="aaa")
@sequencegenerator(name="aaa", sequencename="seq_payment")
2.identity@target()
@retention(runtime)
public @inte***ce
sequencegenerator
主鍵則由資料庫自動維護,使用起來很簡單
3、auto@id
@generatedvalue(strategy = generationtype.identity)
預設的配置。如果不指定主鍵生成策略,預設為auto。
hibernate提供多種主鍵生成策略,有點是類似於jpa,有的是hibernate特有,下面列出幾個hibernate比較常用的生成策略: hibernate提供了多種生成器供選擇,基於annotation的方式通過@genericgenerator實現.@id
@generatedvalue(strategy = generationtype.auto)
hibernate每種主鍵生成策略提供介面org.hibernate.id.identifiergenerator的實現類,如果要實現自定義的主鍵生成策略也必須實現此介面.
identifiergenerator提供一generate方法,generate方法返回產生的主鍵.public
inte***ce
identifiergenerator
自定義主鍵生成策略,由@genericgenerator實現。
hibernate在jpa的基礎上進行了擴充套件,可以用一下方式引入hibernate獨有的主鍵生成策略,就是通過@genericgenerator加入的。
比如說,jpa標準用法
就可以用hibernate特有以下用法來代替:@id
@generatedvalue(generationtype.auto)
@genericgenerator的定義:@id
@generatedvalue(generator = "paymentablegenerator")
@genericgenerator(name = "paymentablegenerator", strategy = "assigned")
源**如下:@target()
@retention(runtime)
對於這些hibernate主鍵生成策略和各自的具體生成器之間的關係,在org.hibernate.id.identifiergenerato***ctory中指定了,public @inte***ce
genericgenerator ;
}
static
上面十二種策略,加上native,hibernate一共預設支援十三種生成策略。使用hibernate註解示例如下:
這種完全類似於:@id
@generatedvalue(generator = "idgenerator")
@genericgenerator(name = "idgenerator", strategy = "identity")
@id
@generatedvalue(strategy=generationtype.identity)
理解JPA註解 GeneratedValue
通過annotation來對映hibernate實體的,基於annotation的hibernate主鍵標識為 id,其生成規則由 generatedvalue設定的.這裡的 id和 generatedvalue都是jpa的標準用法,jpa提供四種標準用法,由 generatedvalue的源 可以...
JPA註解補充
fetchtype.lazy和 fetchtype.eager 什麼區別?1 fetchtype.lazy 懶載入,載入乙個實體時,定義懶載入的屬性不會馬上從資料庫中載入。2 fetchtype.eager 急載入,載入乙個實體時,定義急載入的屬性會立即從資料庫中載入。3 比方 user 類有兩個屬...
JPA註解查詢
1 entity name entityname 必須,name為可選,對應資料庫中一的個表 entity 標識這個pojo是乙個jpa實體 public class users implements serializable 2 table name catalog schema 可選,通常和 e...