什么是springmvc工作流程的编程式事务处理,声明式事务处理

由于项目中引入了多个数据源并且需要对多个数据源进行写操作,那么多数据源的事务管理自然成了不可避免的问题这也让我对@Transactional注解有了进一步的理解(但实际仩也并不是非常深入)

然而这是一个演进的过程,刚开始项目中并没有使用@Transactional指定具体的TransactionManager所以新增一个数据源后,对原有的事务产生了影響了这也是偶尔在一次测试报错而结果没有回滚之后才发现的,遂对于@Transactional注解的一些参数项进行了了解

 

 
刚开始碰到这个问题嘚时候,先想到的是分布式事务管理也去看了JTA相关的文章,但是好像比较麻烦而且都是一些老文章,于是想试试自己实现最后也实現了。所以想知道JTA TransactionManager究竟有什么用呢

指定當前的方法必须在事务的环境下执行;
如果当前运行的方法已经存在事务, 就会加入当前的事务;

指定当前的方法必须在事务的环境下執行;
如果当前运行的方法已经存在事务: 事务会挂起; 会始终开启一个新的事务,执行完后; 刚才挂起的事务才继续运行

我们项目现在需要做一个数据同步的功能使用两个数据源链接两个不同地址相同结构的数据库(MySQL),我配置了AbstractRoutingDataSource来切换数据源

使用定时器每小时调用A数据库数据保存到BΦ。其中需要配置事务如果A出错AB都要回滚。这一步不知道是不是需要使用分布式事务(Atomikos)




我以这种配置运行有两种问题:
 
1.切换数据源無效,lindp1和lindp2都会保存到远程数据库中
2.去除事务配置后切换数据源正常只是没有事务了

我要回帖

更多关于 springmvc工作流程 的文章

 

随机推荐