在applicationContext.xml中有如下配置:
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
也可以:
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
兩種實現方式其實沒有區別,尤其是第二種不要自己去關閉session,session在事務結束后都會自動關閉。 但是一定要注意延遲加載的問題,當對象在session關閉前沒有從數據庫中取得,而jsp中需要展示對象時,會提示LazyInitializationException,你可以通過OpenSessionInViewFilter來保證延遲加載不會出現錯誤,即:
<filter>
<filter-name>opensession</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>opensession</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>