日期:2014-05-16 浏览次数:20487 次
由于项目中对批量的sql进行入库处理。所以打算用jdbcTemplate。在其他的增删改查中都是用hibernateTemplate。
在这里考虑到一个问题,就是当jdbcTemplate和hibernateTemplate结合用的时候,事物是怎么样的了?
经过测试:在一个方法中同时使用jdbcTemplate,和hibernateTemplate对数据进行增加操作。然后抛出异常。
发现事物是可以正常回滚的。但为什么可以这样了?看了下源码终于了解了一些。
<bean
id="oaTM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property
name="sessionFactory"><ref bean="oaSessionFactory"/></property>
</bean>
总而言之。不管是使用jdbcTemplate或者是hibernateTemplate都是对jdbc的封装,说白了,对数据库的操作还是
使用connection,在回滚事物的时候还是调用了connection. Rollback方法来进行回滚的。
这一回想,在hibernate中有个sessionFactory. getCurrentSession()方法。调用的当前的线程session。
意思就是用当前的connection来操作数据。
在spring管理中有这么一个类来进行当前线程的数据绑定:TransactionSynchronizationManager
public abstract class