jdbc事务管理只能限于单个数据源,不能跨多个数据源。事务是默认自动提交的,即一条sql提交一次。这里以两个数据源为例:
|
事务管理 |
DAO |
数据源 |
|
transactionManager |
dao1 |
ds1 |
|
|
dao2 |
ds2 |
即事务管理作用在ds1上,在ds2不起作用。以下代码说明了事务提交的情况:

以下为事务管理分别作用在ds1和ds2上:
|
事务管理 |
DAO |
数据源 |
|
transactionManager1 |
dao1 |
ds1 |
|
transactionManager2 |
dao2 |
ds2 |
jta事务管理可以跨多个数据源,但connect和访问的资源需要支持XA,比如mysql5.0之后可支持XA。这里也以两个数据源为例:
|
事务管理 |
DAO |
数据源 |
|
jtaTransactionManager |
dao1 |
ds1 |
|
dao2 |
ds2 |
即jta事务管理同时作用在ds1和ds2上。以下代码说明了事务提交的情况:

本文探讨了JDBC事务管理在单个数据源内的应用与限制,以及如何通过JTA事务管理实现跨多个数据源的事务处理。重点介绍了事务提交情况及支持XA的数据库版本。
763

被折叠的 条评论
为什么被折叠?



