数据库事务管理:掺杂使用entityDao和jdbcTemplate时的问题-阿里云开发者社区

开发者社区> 技术小阿哥> 正文

数据库事务管理:掺杂使用entityDao和jdbcTemplate时的问题

简介:
+关注继续查看

代码中有一个较大的事务,需要做多次数据库的增删改等操作。

其中一个新增操作我使用了公司封装的hibernate的entityDao;其它操作使用的是spring提供的jdbcTemplate。二者操作流程基本如下:

entityDao.save(写入表1)

jdbcTemplate.update(根据entityDao向表1写入的最新数据,更新表2)

结果,entityDao能够正确写入表1;但是jdbcTemplate的更新操作却始终失败(数据库操作正常结束,但应该被更新的数据没有被更新)。


烦了很久,最后把所有的sql和transaction管理日志全部打印出来,发现一个小问题。


entityDao 的相关事务,是hibernate管理的;但jdbcTemplate的事务,是根据代码中配置的@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class),由JTATransactionInterceptor管理的。


这就是问题原因所在。二者的事务管理机制不一样,因此相当于在两个不同的事务中执行各自的数据库操作。jdbcTemplate在自己的事务中,是看不到entityDao写入它的事务、但暂时没有提交到数据库的数据库的。

 

总之:如果要进行数据库的增删改操作,要么统一使用entityDao,要么统一使用jdbcTemplate。不要混用。




本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/1579382,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring JDBCTemplate使用JNDI数据源
xml配置: 1 3 4 5 6 7 在weblogic/jboss中配置好JNDI数据源后,上述节点改为: 1 2 3 j...
867 0
spring 之jdbcTemplate使用
1 方法 queryForObject() 与queryForList() 方法queryForObject(),当在数据表查找的记录不存在时,将抛异常,使用时需要添加异常处理,根据异常类型确定返回结果,建议使用queryForList()替代. 2 方法 update(sql,new Object[]{} ) 与 jdbcTemplate.update(sql,
1114 0
"无法删除数据库,因为该数据库当前正在使用"问题解决
原文:"无法删除数据库,因为该数据库当前正在使用"问题解决 异常处理汇总-数据库系列  http://www.cnblogs.com/dunitian/p/4522990.html  以前刚学数据库的时候比较苦恼这个问题,今天删除的时候又看见了,正好一起记录一下: 图形化方法: 命令行方法...
1222 0
解决sitemesh3装饰页面不能使用freemarker标签问题
如题,这个问题其实在sitemesh2中已经很好的解决了,不过在sitemesh3中可能没有解决,所以要自己写代码解决了,下面我先讲下sitemesh2是如何解决的: sitemesh-freemarker com.
862 0
springmvc sitemesh json问题
参考: 解决方法: $.post('/json/submit.json', { name: username, password: password }, functio...
536 0
QGraphicsItem如何使用信号/槽
简述 对于 QGraphicsItem 来说,信号/槽和属性机制不是它的一部分,因为它不继承自 QObject。这是一个出于性能考虑的设计决策,允许比较大的场景以及快速的交互。 特殊情况下,如果真的需要使用信号/槽,可以使用 QObject 的信号/槽和属性机制来扩展 QGraphicsItem。 简述 继承自 QObject 和 QGraphicsItem 继承
1345 0
数据库事务隔离级别
一,事务的4个基本特征  Atomic(原子性): 事务中包含的操作被看做一个逻辑单元,这个逻辑单元中的操作要 么全部成功,要么全部失败。 Consistency(一致性): 只有合法的数据可以被写入数据库,否则事务应该将其回滚到最初 状态。
1158 0
首次曝光 | 阿里数万名开发者都在使用的数据库开发工具到底长什么样?
数据管理DMS(Data Management Service)是阿里巴巴自研图形化的数据库开发工具,已服务阿里巴巴及阿里云上几十万开发者实现安全便捷的数据库访问开发工作。用户可以通过DMS实现25种常见数据库的访问研发。
1322 0
8434
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载