hibernate懶載入異常解決方案.
阿新 • • 發佈:2019-01-10
本文章主要講解hibernate套上spring,struts2/springMVC,出現的懶載入異常.
懶載入異常是由於session的關閉引起的 , 一般是出現在當資料從controller控制層傳到view前臺頁面進行迭代時出
現 , 大多數情況下, 我們會將事務開啟和提交,session關閉交給spring來進行管理 , 因為來到controlelr控制層的時候 ,
session已經讓spring給關閉了 , 所以會導致出現 懶載入異常 .
為了友好的使用懶載入 , 並避免出現懶載入異常 , 所以我們需要延長session的關閉時間 !
對於 strust2 和 springMVC 框架 有一下兩種解決方案 :
1 . 對於struts2 : 在web.xml中配置 :
<!-- OpenSessionInViewFilter過濾器需要配置在Struts2框架過濾器前面,否則不起作用。 --> <filter> <filter-name>openSession</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>openSession</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
如果hibernate版本是3 , 直接改為3即可.
2 . 對於springMVC : 在applicationContext.xml中配置 :
<!-- 處理懶載入異常的配置 , 可以將session關閉的時間延長至頁面 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**/toRegister.do" /> <!-- controller層的方法url , 可配置多個 --> <bean class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor"> <property name="sessionFactory" ref="sessionFactory" /> </bean> </mvc:interceptor> </mvc:interceptors>
如果hibernate版本是3 , 直接改為3即可.