2016-01-20 32 views
0

假設需要幫助的訪問幾個值時提取類型是渴望所有子實體

  1. 我有一個父實體「A」和子實體「B」,「C」,「d」和「 E」

  2. 一對多映射與取鍵入A,其是所有子實體急於定義 - 「B」, 「C」, 「d」 和 「E」

  3. B, C,D,E與多對一併列 - 「P」實體

現在,當我拿到「A」實體......所有被加載及以下的查詢需要大量的時間

FROM A ORDER BY pkey DESC 

檢索「A」 entity..I將遍歷B之後和從相同的獲得「P」主鍵。同樣地,我需要「P」和「B」相關聯,「C」,「d」和「E」

  1. 的所有主鍵是否可以寫任何HQL只得到無負載的主鍵整個實體沒有考慮或繞過已經使用獲取類型渴望定義的註釋?

  2. 我們可以更改提取類型爲急於懶惰,爲每個實體執行單獨的查詢以獲取值嗎?

  3. 添加批量大小以獲取類型作爲渴望會有成果嗎?

您能否建議我們如何才能解決這三方面的問題,以及解決此問題的最佳方法是什麼?

謝謝。

回答

0

很難理解你的映射,並且提出沒有持久類的提議(「Talk是便宜的,給我看代碼」)。

  1. 這是可能的。請參閱本HQL作爲模板(這是對於B 的孩子的唯一)

    select p.pid from P p inner join p.b where b.a.pid = : pidOfA

  2. 你應該這樣做,當然。請參考 this一個 的方法如何做到這一點。

  3. 可能是批量抓取會有所幫助,但我不認爲這是一個正確的策略 。

請從Hibernate 5文檔中讀取Chapter 20. Improving performance如果您還沒有這樣做。

+0

這是所有的hibernate註釋映射和映射不是通過xml完成​​ – Kathiresa

+0

@Kathiresa我看到:)但沒有任何註釋在你的問題:) –