在hibernate中,延遲加載是1個非常大的優點,但有時候卻給我們帶來一些小麻煩,在後台查詢結束後,session已經關閉,但在前台顯示的時候,如果存在關聯關系就會產生延遲加載異常。
解決辦法是客戶端每次請求就分配1個session,將請求結果返回給客戶端,並完成展現後關閉session。
實現這個功能非常簡單,在web.xml中加入以下配置
<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>
使用spring提供這個過濾器就可以實現session的集中管理了,所有以.do結尾的請求都自動分配了1個session,並且在這個請求過程中都使用這個session.
來自:http://springking.iteye.com/blog/198009