Hibernate与JdbcTemplate共享事务管理
来源:互联网 发布:淘宝订单最多保存多久 编辑:程序博客网 时间:2024/06/05 20:43
在Spring和Hibernate的配置文件中,我们可以对类中的方法进行事务控制,也就是说某个方法中含有多个数据库的写操作,我们可以通过创建一个Spring中的HibernateTransactionManager实例,把相应的sessionFactory注入到其的sessionFactory属性中,由事务声明的方式进行事务控制。样例如下:
<bean id="oaTM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="oaSessionFactory"/></property>
</bean>
但是这种方式有个局限性,如果该方法中既有调用Hibernate进行存储,也有通过JdbcTemplate进行数据库的写操作,如果在方法执行过程中,写数据发生异常时,只有纳入了事务管理的通过Hibernate进行存储的数据才会回滚,而通过JdbcTemplate方式进行操作的数据不会进行回滚。
原因是Hibernate与JdbcTemplate使用的是不同DBConnection,而且JdbcTemplate未申明相应的事务管理,所以要想在既使用了Hibernate,也使用了JdbcTemplate进行数据库存储操作的方法进行事务管理,需要在Spring的配置文件做适当的修改,样例如下:
<bean id="oaTM" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory"><ref bean="oaSessionFactory"/></property>
<property name="dataSource"><ref bean="oaDataSource"/></property>
</bean>
JdbcTemplate和Hibernate能被wrap到同一个事务里。成立需要几点条件:
1、使用同一个datasource;
2、事务交由HibernateTransactionManager管理;
3、相关dao以及service需要使用runtime exception体系,使用spring提供的exception可以,自己封装设计的runtime exception体系也行。
转载请标明出处 http://blog.csdn.net/shimiso
技术交流群:361579846
- Hibernate与JdbcTemplate共享事务管理
- jdbcTemplate与hibernate共享事务管理
- 阿录帮帮忙—Hibernate与JdbcTemplate共享事务管理
- Spring JdbcTemplate 与 事务管理
- Spring JdbcTemplate 与 事务管理 学习
- Spring JdbcTemplate 与 事务管理 学习
- Hibernate与Spring的事务管理
- jdbctemplate batchupdate 的事务管理
- 事务管理之Hibernate事务管理
- Hibernate事务管理
- Hibernate事务管理
- Hibernate事务管理
- hibernate-事务管理
- hibernate-事务管理
- Hibernate事务管理
- hibernate-事务管理
- Hibernate事务管理
- Hibernate事务管理
- HQL语句
- 使用reg文件修改注册表
- 学习笔记--一个微妙的BUG
- zoj1133Smith Numbers(3)
- H.264视频RTP负载格式/NALU的类型
- Hibernate与JdbcTemplate共享事务管理
- 树状数组
- 悲剧,我的线段树有一个地方一直写繁了!!!
- 根据ASCII码如何获取字符
- 你需要准备的五个面试问题
- oncopy="return false;" oncut="return false;"网页常用ja..
- Scheme相关文章
- Glibc 安装指南(适用于2.3.6/2.4/2.5/2.6)
- JS获取浏览器可视区域尺寸