<bean id="oaTM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="oaSessionFactory"/></property>
</bean>spring
可是這種方式有個侷限性,若是該方法中既有調用Hibernate進行存儲,也有經過JdbcTemplate進行數據庫的寫操做,若是在方法執行過程當中,寫數據發生異常時,只有歸入了事務管理的經過Hibernate進行存儲的數據纔會回滾,而經過JdbcTemplate方式進行操做的數據不會進行回滾。數據庫
緣由是Hibernate與JdbcTemplate使用的是不一樣DBConnection,並且JdbcTemplate未申明相應的事務管理,因此要想在既使用了Hibernate,也使用了JdbcTemplate進行數據庫存儲操做的方法進行事務管理,須要在Spring的配置文件作適當的修改,樣例以下: session
<bean id="oaTM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="oaSessionFactory"/></property>
<property name="dataSource"><ref bean="oaDataSource"/></property>
</bean>hibernate
JdbcTemplate和Hibernate能被wrap到同一個事務裏。成立須要幾點條件:
一、使用同一個datasource;
二、事務交由HibernateTransactionManager管理;
三、相關dao以及service須要使用runtime exception體系,使用spring提供的exception能夠,本身封裝設計的runtime exception體系也行。 設計