Spring控制的Hibernate的生命周期只針對數據層和服務層,表現層就沒這個福分了還有就是只有在session沒有關閉的情況下運行Obj.getXxx()時才會執行select語句從數據庫加載對象(這就是所謂的延遲加載)session已經關閉,此時再運行Obj.getXxx()方法,Hibernate就會拋出"Could not initialize proxy - the owning Session was closeed"的異常。不過可以通過 org.springframework.orm.hibernate3.support.OpenSessionInViewFilter過濾器來彌補這一缺陷。在WEB.XML中加入以下內容:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<!-- singleSession默認為true,若設為false則等于沒用OpenSessionInView -->
<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>
==============如果還是不行則在DAO里加入Hibernate.initialize(Obj.getXxx());
posted on 2008-04-10 23:44
...... 閱讀(393)
評論(0) 編輯 收藏