[英]hibernate Lazy loading
我的休眠對象A具有對象B,C和D作為屬性:
A.getB().getName();
A.getC().getTitle();
現在,我想在不獲取LazyInitializationException的情況下加載A的所有屬性。 因此,我需要完全加載A的對象圖。
是否有任何通用方法可以在休眠狀態下檢索對象圖?
View中的模式打開會話有助於避免LazyInitializationException。 同樣在Seam中,它是通過使用擴展的PersistentManager和對話范圍來完成的
另一個解決方案渴望像本示例或KLE答案中那樣獲取。
您可以在.hbm.xml映射文件中使用屬性'lazy =“ false”'進行指定,也可以在條件對象中使用createAlias或createCriteria方法進行指定。
也可以根據特定關聯的條件設置fetchMode
有時您可能希望加載完整的對象圖,而有時則需要更少的數據(並且不想支付與加載所有這些對象相關的性能損失)。 因此,假設您的需求有所不同。
Hibernate延遲加載通常,但是您可以使用以下幾種方法之一加載其他數據(有關詳細信息,請參見Hibernate文檔):
懶惰樣本:
A a = ...; // load A
String name = a.getB().getName(); // triggers an implicit query to load B
HQL樣本:
select a
from A a
left join a.b b
left join a.c c
where a.id = :id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.