OpenSessionInViewFilter的配置


OpenSessionInViewFilter是用來處理懶加載異常的。
懶加載異常的意思的就是:還用不到的東西,就先不加載,等需要的時候再來加載。
所以懶加載對性能有一定的提升,但是,這也會出現一些問題,一般來說,事務開始的時候Session就被獲取,事務結束的時候Session就會被關閉。所以懶加載會出現Session已關閉,卻還是去調用Session,從而報Session為空的錯誤。
據我所知道解決這個問題的方法有兩個:一個就是關閉懶加載異常。(一般不推薦!因為關閉了,就不能使用懶加載的好處了)
另一個方法就是把Session的關閉延后。(推薦使用)

在使用第二種方法解決這個問題時,要先了解一下事務、Session等的調用過程:
如:
圖像 1.png


因為在顯示層的時候要使用到懶加載屬性,所以要讓Session到顯示層調用了懶加載之后在關閉。


那么可以把Session的關閉交給Filter或Interceptor,因為很多程序都要用到這個功能,所以有人已經實現了這個功能。
也就是:   org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
只要配置這個Filter就可以了。
如下:
   
   
   
           
  1. <!-- 防止懶加載異常的過濾器 -->
  2. <filter>
  3. <filter-name>OpenSessionInViewFilter</filter-name>
  4. <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
  5. </filter>
  6. <filter-mapping>
  7. <filter-name>OpenSessionInViewFilter</filter-name>
  8. <url-pattern>*.action</url-pattern>
  9. </filter-mapping>
不過要注意的一件事!
就是這個OpenSessionInViewFilter  過濾器要配置在Struts配置之前。
不然會無效!!







 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM