我已经阅读了很多,但是还没有找到简单的方法。
我使用的是Spring JdbcTemplate,有两个数据源和模板,并希望按照以下伪代码提交对它们的更改:
JdbcTemplate tpl1
JdbcTemplate tpl2
try {
tpl1.doStuff()
tpl2.doStuff()
tpl1.commit()
tpl2.commit()
} catch (Exception ex) {
tpl1.rollback()
tpl2.rollback()
}
除了JdbcTemplate不包含commit
或rollback
以外,因为他们希望您使用Spring内置的事务处理。
我不想使用2PC / JTA / XA / Atomikos的复杂性,而且我的数据库也不支持。
无论如何我都看不到要从JdbcTemplate中断开连接,所以我不能不使用Spring @Transactional的任何支持而像上面那样手动进行操作。
我尝试使用@Transactional
并依次编写提交给每个单独的CompositePlatformTranactionManager
的{{1}},但是Spring线程作用域中的内容DatasourceTransactionManager
失败了。 / p>
除了根本不使用JdbcTemplate而是仅使用低级别的JDBC操作(这不是一个选择)之外,还可以怎么做?