JPA和Hibernate抓取策略的差異

2021-08-25 04:36:54 字數 661 閱讀 4707

hibernate和jpa

的抓取策略是有差異的

。這一點在使用jpa註解時會有所體現。有時候我們需要新增一些hibernate獨有的註解才能實現比較好的抓取。下面簡單提幾點。

所謂「抓取策略」,總要涉及兩個問:何時抓取以及如果抓取。這兩點在hibernate提供的註解上體現的非常明顯。hibernate提供兩套註解分別用來描述「何時抓取」和「如何抓取」。這樣看起來非常條理和清晰。但是jpa顯然沒有這麼做。它只提供了fetch=featchtype.lazy or fetchtype.eager.但是我們必須明白這兩種選項對應的實際抓取策略是什麼。

對於fetch=featchtype.lazy:何時抓取:lazy,如何抓取:select

對於fetch=featchtype.eager:何時抓取:eager,如何抓取:join

這就是jpa對抓取策略的描述。因為它對於lazy和eager只各提供一種抓取方法,因此它就不需要再指定「如何抓取」了。但是hibernate還提供一種subselect抓取,它是配合lazy=true的抓取方法。

如果想要使用subselect抓取,你可以用hibernate的fetchmode.subselect註解覆寫jpa的配製,但是lazy=true這一點,你還是需要使用fetch=fetchtype.lazy來配製的,你只是替換了它的select抓取方法。

JPA和Hibernate的區別

hibernate,當今很流行的orm框架,是jpa的乙個實現,但是其功能是jpa的超集。hibernate annotation是hibernate支援annotation方式配置的基礎,它包括了標準的jpa annotation以及hibernate自身特殊功能的annotation。hiber...

Hibernate批量抓取

siwuxie095 hibernate 批量抓取 以客戶和聯絡人為例 一對多 1 批量抓取 同時查詢多個物件的關聯物件,是 hibernate 抓取策略的一種 2 一般情況下,會傳送多條 sql 語句,效率低下 如 查詢所有客戶,返回 list 集合,遍歷該 list 集合,得到每 個客戶的所有聯...

hibernate 抓取策略

1.單端 對端是one,即many2one 1.1 在用many2one時,fetch可以採取select或者join.用select時,會另發一條語句載入關聯物件。用join時,用一條語句就查上來,相當於資料庫裡面的連線,內連線外連線取決於外來鍵是否允許為空。注意 這個規則僅適用於get或者loa...