java程序中的延時加載異常及解決方案
所謂延時加載就是懶加載(lazy),延遲加載。
什么時候用懶加載呢,我只能回答要用懶加載的時候就用懶加載。
至于為什么要用懶加載呢,就是當我們要訪問的數(shù)據(jù)量過大時,明顯用緩存不太合適,因為內(nèi)存容量有限 ,為了減少并發(fā)量,減少系統(tǒng)資源的消耗,
我們讓數(shù)據(jù)在需要的時候才進行加載,這時我們就用到了懶加載。懶加載的異常有很多種,你指的是不是session已經(jīng)關閉的異常?因為那個初學者最容易遇到情況是當你加載出一個一對多關系的一這端的對象,然后在出了事務之后的地方,比如頁面上,還想再獲取多端對象里面的除了id以外的屬性的時候,就會跑出這個異常。
我舉個例子,你有一個 Grade 對象關聯(lián)了 很多 Student 對象,并且用的是懶加載
你在service里面通過數(shù)據(jù)庫查詢獲得了一個 Grade對象,這個對象里面有一個Set<Student> students 集合,但是你并沒有對這個對象做進一步的處理(比如 intialize之類的操作讓懶加載的代理對象真正去實例化)
然后你到了頁面的展示的時候,去遍歷 students 這個集合,并且你試圖在頁面上顯示每個 student 的 name 屬性(這個屬性不是studentId) 這個時候就會拋出session已經(jīng)關閉的異常
在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>
以上就是本文的全部內(nèi)容了,希望小伙伴們能夠喜歡。
相關文章
詳解Java實現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片
這篇文章主要介紹了Java實現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-03-03spring @Validated 注解開發(fā)中使用group分組校驗的實現(xiàn)
這篇文章主要介紹了spring @Validated 注解開發(fā)中使用group分組校驗的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05Spring Cloud Eureka 注冊與發(fā)現(xiàn)操作步驟詳解
這篇文章主要介紹了Spring Cloud Eureka 注冊與發(fā)現(xiàn)操作步驟詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03Java設置Access-Control-Allow-Origin允許多域名訪問的實現(xiàn)方法
這篇文章主要介紹了Java設置Access-Control-Allow-Origin允許多域名訪問的實現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-10-10Java設計模式之策略模式_動力節(jié)點Java學院整理
策略模式是對算法的封裝,把一系列的算法分別封裝到對應的類中,并且這些類實現(xiàn)相同的接口,相互之間可以替換。接下來通過本文給大家分享Java設計模式之策略模式,感興趣的朋友一起看看吧2017-08-08