當前位置:偏方大全网 - 偏方秘方 - 如何在hibernate中配置延遲加載

如何在hibernate中配置延遲加載

Hibernae的延遲加載是很常見的技術。默認情況下,實體的集合屬性將被延遲加載,與實體相關聯的實體也將被延遲加載。Hibernate通過這種延遲加載降低了系統的內存開銷,從而保證了Hibernate的運行性能。

我們先來分析壹下Hibernate延遲加載的“秘密”。

集合屬性的延遲加載

Hibernate從數據庫初始化壹個持久實體的時候,實體的集合屬性是用persistent類初始化的嗎?如果集合屬性中有10萬條甚至上百萬條記錄,那麽當持久化實體初始化並捕獲所有集合屬性時,性能會急劇下降。完全有可能系統只需要使用持久化類集合屬性中的壹些記錄,而根本不需要使用所有的集合屬性,所以沒有必要壹次加載所有的集合屬性。

對於集合屬性,通常建議使用延遲加載策略。所謂延遲加載,就是在系統需要使用set屬性的時候,從數據庫中加載關聯數據。

例如,下面的Person類包含壹個set屬性,set屬性中元素的類型是Address。Person類的代碼片段如下:

清單1。Person.java

公共階層的人

{

//標識屬性

私有整數id;

//人名屬性

私有字符串名稱;

//保留Person的年齡屬性。

私人年齡;

//使用Set保存集合屬性。

私有設置& lt地址& gtaddresses = new HashSet & lt地址& gt();

//下面省略了每個屬性的setter和getter方法。

...

}

為了使Hibernate能夠管理持久性類的集合屬性,該程序為持久性類提供了以下映射文件:

清單2。Person.hbm.xml

& lt?xml版本="1.0 "編碼="GBK "?& gt

& lt!DOCTYPE hibernate-映射公共

"-//休眠/休眠映射DTD 3.0//EN "

" posite-element class="Address " >

& lt!-映射壹般屬性細節-& gt;

& ltproperty name = " detail "/& gt;

& lt!-映射公共屬性zip-& gt;

& ltproperty name = " zip "/& gt;

& lt/composite-element & gt;

& lt/set & gt;

& lt/class & gt;

& lt/hibernate-mapping & gt;

長文章請參考博客:/xc 635960736/article/details/7049863。

  • 上一篇:氣虛怎麽調理?
  • 下一篇:臉上長疣了怎麽辦?
  • copyright 2024偏方大全网