Spring控制的Hibernate的生命周期只針對數(shù)據(jù)層和服務(wù)層,表現(xiàn)層就沒這個福分了還有就是只有在session沒有關(guān)閉的情況下運行Obj.getXxx()時才會執(zhí)行select語句從數(shù)據(jù)庫加載對象(這就是所謂的延遲加載)session已經(jīng)關(guān)閉,此時再運行Obj.getXxx()方法,Hibernate就會拋出"Could not initialize proxy - the owning Session was closeed"的異常。不過可以通過 org.springframework.orm.hibernate3.support.OpenSessionInViewFilter過濾器來彌補這一缺陷。在WEB.XML中加入以下內(nèi)容:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<!-- singleSession默認(rèn)為true,若設(shè)為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
...... 閱讀(394)
評論(0) 編輯 收藏