Hibernate延遲加載是項目中非常常用的技術。通過使用Hibernate延遲加載機制可以在加載數據是不必加載全部數據,而是只加載我們需要的那部分,其余部分在需要使用時才從數據庫裝載,以此來減少數據量提高系統性能。
Hibernate延遲加載大致可以分為兩類,一類是延遲屬性加載,另一類是延遲關聯實體加載。
屬性加載又可以分為兩類,一類是集合屬性,一類是非集合屬性。
關聯加載也分兩種情況,一種是多對一,另一種是一對一。
今天遇到的問題屬於關聯加載的,A、B部門屬於關聯部門,B屬於A的子部門,當查詢B部門的時候並沒有用的A部門的相關屬性,所以為了保證性能我們並沒有將A部門的信息加載到頁面。但是當我們在B部門頁面點擊”返回上一級“按鈕是,需要傳入一個A部門的ID,這時候B部門信息已經顯示到頁面,相關的session已經關閉了,系統會拋出異常,錯誤信息如下:
這種方法最簡單,但是這樣我們就不能用hibernate的延遲加載機制了,也就是說每次加載都有可能加載很多用不到的數據,影響系統性能,這是不推薦的。
<!-- 配置Spring的用於解決懶加載問題的過濾器 --> <filter>
<filter-name>OpenSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OpenSessionInViewFilter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。