多数据库事务管理(JTA)实现

最近实现一个后台管理项目,涉及到多数据库同步,就出现了事务问题,原来的设计springmvc+mybaties+druid数据源不可用,原来JDBC变为JTA。
设计变为:springmvc+mybateis+atomikos.
maven依赖:

com.atomikos
atomikos-util
${atomikos.version}

com.atomikos
transactions-jta
${atomikos.version}

com.atomikos
transactions
${atomikos.version}

com.atomikos
transactions-jdbc
${atomikos.version}

com.atomikos
transactions-jdbc-deprecated
${transactions.jdbc.deprecated}

Spring配置文件有所变化。
配置如下:

select 1

#{configProperties[‘abc.url‘]}
#{configProperties[‘abc.username‘]}
#{configProperties[‘abc.password‘]}

#{configProperties[‘def.url‘]}
#{configProperties[‘def.username‘]}
#{configProperties[‘def.password‘]}

#{configProperties[‘abcorder.url‘]}
#{configProperties[‘abcorder.username‘]}
#{configProperties[‘abcorder.password‘]}

时间: 2024-10-05 06:05:04

多数据库事务管理(JTA)实现的相关文章

数据库事务管理原理

数据库是一个共享资源,可以提供多个用户使用.这些用户程序可以一个一个地串行执行,每个时刻只有一个用户程序运行,执行对数据库的存取,其他用户程序必须等到这个用户程序结束以后方能对数据库存取.但是如果一个用户程序涉及大量数据的输入/输出交换,则数据库系统的大部分时间处于闲置状态.因此,为了充分利用数据库资源,发挥数据库共享资源的特点,应该允许多个用户并行地存取数据库.但这样就会产生多个用户程序并发存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,破坏数据库的一致性,所以数据库管

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

代码中有一个较大的事务,需要做多次数据库的增删改等操作. 其中一个新增操作我使用了公司封装的hibernate的entityDao:其它操作使用的是spring提供的jdbcTemplate.二者操作流程基本如下: entityDao.save(写入表1) jdbcTemplate.update(根据entityDao向表1写入的最新数据,更新表2) 结果,entityDao能够正确写入表1:但是jdbcTemplate的更新操作却始终失败(数据库操作正常结束,但应该被更新的数据没有被更新).

深入Spring数据库事务管理(一)

配置事务管理器 <?xml version='1.0' encoding='UTF-8' ?> <!-- was: <?xml version="1.0" encoding="UTF-8"?> --> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSc

深入Spring数据库事务管理(二)

数据库的相关知识 1.数据库事务ACID特性 原子性(Atomicity): 说的是一个事物内所有操作共同组成一个原子包,要么全部成功,要么全部失败.这是最基本的特性,保证了因为一些其他因素导致数据库异常,或者宕机. 一致性(Consistency): 数据库事物的一致性就规定了事物提交前后,永远只可能存在事物提交前的状态和事物提交后的状态,从一个一致性的状态到另一个一致性状态,而不可能出现中间的过程态.也就是说事物的执行结果是量子化状态,而不是线性状态. 隔离性(Isolation): 事物的

数据库事务管理及存储引擎

http://blog.csdn.net/xiaoyu714543065/article/details/8211265 事务具有四个特征:原子性( Atomicity ).一致性( Consistency ).隔离性( Isolation )和持续性( Durability ).这四个特性简称为 ACID 特性. MySQL5.5以后默认使用InnoDB存储引擎,其中InnoDB和BDB提供事务安全表,其它存储引擎都是非事务安全表.若要修改默认引擎,可以修改配置文件中的default-stor

数据库事务管理

数据库提供了四种事务隔离级别, 不同的隔离级别采用不同的锁类开来实现. 在四种隔离级别中, Serializable的级别最高, Read Uncommited级别最低. 大多数数据库的默认隔离级别为: Read Commited,如Sql Server , Oracle. 少数数据库默认的隔离级别为Repeatable Read, 如MySQL InnoDB存储引擎 即使是最低的级别,也不会出现 第一类 丢失 更新问题 . 1. 脏读(事务没提交,提前读取):脏读就是指当一个事务正在访问数据,

集算器管理数据库事务的代码示例

集算器可以向数据库写入数据,支持数据库事务管理.这里通过例子来看一下控制事务提交和回滚等等的编程方法. 1.自动提交事务 集算器可以方便的实现增删改,最简单的写法如下: 上图中的A2到A4分别实现了插入.修改和删除.每条sql执行之后自动提交.需要说明的是: 1.3条语句提交了3次,对数据库操作比较频繁. 2.三条sql没有事务关系,后续的sql如果执行失败,并不影响前面的sql. 下面介绍结合序表批量提交事务,以及多条sql组成一个事务的编程例子.     2.批量提交事务 从students

Hibernate事务管理

Hibernate 是JDBC 的轻量级封装,本身并不具备事务管理能力.在事务管理层, Hibernate将其委托给底层的JDBC或者JTA,以实现事务管理和调度功能.      Hibernate的默认事务处理机制基于JDBC Transaction.我们也可以通过配置文件设定采用JTA作为事务管理实现: <hibernate-configuration>          <session-factory>                   ……               

Hibernate 事务管理

一. 事务包含四个基本特性:简称ACID: 1. Atomic(原子性):全部成功或全部失败: 2. Consistency(一致性):只有合法数据才能被写入,不合法则回滚到最初状态: 3. Isolation(隔离性):允许并发,并发的事务相互独立: 4. Durability(持久性):事务结束后,结果能保存: 二. 数据库事务管理隔离等级 数据库操作过程中经常出现三种不确定情况: 1. 脏读取(Dirty Reads):一个事务读取了另一个并行事务未提交的数据: 2. 不可重复读取(Non