1. 程式人生 > >hibernate懶載入異常解決方案.

hibernate懶載入異常解決方案.

本文章主要講解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即可.