java法式中的延時加載異常及處理計劃。本站提示廣大學習愛好者:(java法式中的延時加載異常及處理計劃)文章只能為提供參考,不一定能成為您想要的結果。以下是java法式中的延時加載異常及處理計劃正文
所謂延時加載就是懶加載(lazy),延遲加載。
甚麼時刻用懶加載呢,我只能答復要用懶加載的時刻就用懶加載。
至於為何要用懶加載呢,就是當我們要拜訪的數據量過年夜時,顯著用緩存不太適合,由於內存容量無限 ,為了削減並發量,削減體系資本的消費,
我們讓數據在須要的時刻才停止加載,這時候我們就用到了懶加載。懶加載的異常有許多種,你指的是否是session曾經封閉的異常?由於誰人初學者最輕易碰到情形是當你加載出一個一對多關系的一這真個對象,然後在出了事務以後的處所,好比頁面上,還想再獲得多端對象外面的除id之外的屬性的時刻,就會跑出這個異常。
我舉個例子,你有一個 Grade 對象聯系關系了 許多 Student 對象,而且用的是懶加載
你在service外面經由過程數據庫查詢取得了一個 Grade對象,這個對象外面有一個Set<Student> students 聚集,然則你並沒有對這個對象做進一步的處置(好比 intialize之類的操作讓懶加載的署理對象真正去實例化)
然後你到了頁面的展現的時刻,去遍歷 students 這個聚集,而且你試圖在頁面上顯示每一個 student 的 name 屬性(這個屬性不是studentId) 這個時刻就會拋出session曾經封閉的異常
在SSH框架中:
可直接可使用OpenSessionInViewFilter
在設置裝備擺設文件中設置裝備擺設
<filter-name>opensession</filter-name>
<filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<filter-mapping>
<filter-name>opensession</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
以上就是本文的全體內容了,願望小同伴們可以或許愛好。