由於Hibernate引入了Lazy Load特性,使得脫離Hibernate的Session周期的對象如果再想通過getter方法取到其關聯對象的值,Hibernate會拋出一個lazyload的Exception。所以為了解決這個問題,Spring引入了這個Filter,使得Hibernate的Session的生命周期變長。
有兩種方式可以配置實現OpenSessionInView,分別是OpenSessionInViewInterceptor和OpenSessionInViewFilter,功能完全相同,只不過一個在web.xml配置,另一個在application.xml配置而已。我個人比較傾向配置在application.xml里,因為web.xml里配置的東西的太多的話容易發生衝突,雖然可以調整,但是畢竟多了個麻煩。
OpenSessionInViewInterceptor配置:
<beans>
<bean name="openSessionInViewInterceptor" class="org.springframework.orm.hibernate3.support.OpenSessionInViewInterceptor">
<property name="SessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="openSessionInViewInterceptor"/>
</list>
</property>
<property name="mappings">
......
</property>
</bean>
......
</beans>
OpenSessionInViewFilter配置: (此監聽器應該在struts2的監聽器前面)
<web-app>
......
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
......
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
......
</web-app>
相關詞條
-
OpenSessionInView
OpenSessionInViewFilter是Spring提供的一個針對Hibernate的一個支持類,其主要意思是在發起一個頁面請求時打開Hiber...
-
J2EE項目實訓Spring框架技術
圖書簡介作/譯者:楊少波 出版社:清華大學出版社 出版日期:2008年05月 ISBN:97873021692...
圖書簡介 內容提要 圖書目錄 文章節選 編輯推薦與評論 -
《J2EE項目實訓HIBERNATE框架技術》
《J2EE項目實訓Hibernate框架技術》【名稱】《J2EE項目實訓HIBERNATE框架技術》【定價】¥39.00【作 ...
內容簡介 目錄介紹 參考資料 -
struts2
發展歷史Struts22000年5月發展至今,Struts1已經成為了一個高度成熟的框架,不管是穩定性還是可靠性都得到了廣泛的證...
發展歷史 體系結構 技術改進 對比 基類 -
J2EE框架深度歷險
七步簡化——OpenSessionInView 13.5...
圖書信息 內容簡介 目錄 -
輕量級Web套用開發寶典
宣傳語輕量級Web套用開發寶典以入門級的實例為起點,充分考慮初學者的需要以實例講解為基礎,探索組件的設計思想書中實例都來源於真實...
宣傳語 內容簡介 序 目錄 -
Struts 2
發展歷史2000年5月發展至今,Struts1已經成為了一個高度成熟的框架,不管是穩定性還是可靠性都得到了廣泛的證明。市場占有率...
發展歷史 工作原理 體系結構 技術改進 對比