1. 程式人生 > >hibernate4+spring3.1整合常見問題解決方法

hibernate4+spring3.1整合常見問題解決方法

由於目前網上很少有關於hibernate4+spring3.1的配置方法,為了讓大家少走彎路,我總結了一下與大家分享。

hibernate4的改動較大隻有spring3.1以上版本能夠支援。這裡簡單介紹了hibernate4相對於hibernate3配置時出現的錯誤,只列舉了問題和解決方法,詳細原理如果大家感興趣還是去自己搜吧,網上很多。

1、spring3.1去掉了HibernateDaoSupport類。hibernate4需要通過getCurrentSession()獲取session。並且設定<prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop> (在hibernate3的時候是thread和jta)。

2、快取設定改為<prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</prop> 

                <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>

3、spring對hibernate的事務管理,不論是註解方式還是配置檔案方式統一改為:

 <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager" >

  <property name="sessionFactory"><ref bean="sessionFactory"/></property>

 </bean>

4、getCurrentSession()事務會自動關閉,所以在有所jsp頁面查詢資料都會關閉session。要想在jsp查詢資料庫需要加入

org.springframework.orm.hibernate4.support.OpenSessionInViewFilter過濾器。

5、hibernate分頁出現 ResultSet may only be accessed in a forward direction

需要設定hibernate結果集滾動 <prop key="jdbc.use_scrollable_resultset">false</prop>