2014-03-12 58 views
1

是否有可能強制Hibernate使用批量抓取進行預加載的JPA實現?渴望加載usig批處理獲取

您可能想知道爲什麼我想要做這麼奇怪的事情,所以讓我解釋一下。

我們有兩個實體AB。從AB有多對一的關係。

我想加載A實體進行搜索,我希望在從存儲庫返回之前將它們完全加載。

但由於有很多A和很少B的所有(相關)B將在二級緩存中。因此,我希望避免每次從數據庫中獲取所有B

回答

0

據我瞭解你的問題,一個解決辦法是在一個NamedQuery使用NamedQuery與FETCH指令:

SELECT DISTINCT B LEFT JOIN FETCH B.a A//will return fully loaded B instances 

如果要指定批量大小,你可以使用在Hibernate中@BatchSize(不是JPA)。以this link爲例。

+0

但爲了加載B實例,它將使用連接,從而繞過第二級緩存,對吧? –

+0

恕我直言,是的,因爲它是任何NamedQuery的情況下(如果查詢結果沒有緩存!)。但是,您可以使用'@ BatchSize'而不使用NamedQueries。 –