全局和本地事务(从理论上)

简介: 全局和本地事务 ·   全局事务 - 资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器一般使用 XA二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。 ·   本地事务 - 在单个 EIS 或数据库的本地并且限制在单个进程内的事务。本地事务不涉及多个数据来源。 本地和全局事务都使用 javax.transaction.UserTransaction

全局和本地事务

·   全局事务 - 资源管理器管理和协调的事务,可以跨越多个数据库和进程。资源管理器一般使用 XA二阶段提交协议与“企业信息系统”(EIS) 或数据库进行交互。

·   本地事务 - 在单个 EIS 或数据库的本地并且限制在单个进程内的事务。本地事务不涉及多个数据来源。

本地和全局事务都使用 javax.transaction.UserTransaction 接口划分界限,客户端必须使用此接口。本地事务不使用事务管理器,因而处理速度更快。

起初,所有事务都是本地的。如果非 XA 数据源连接是事务范围中登记的第一个资源连接,当“另一个”XA 数据源连接加入此连接时,该非 XA 数据源连接就成为全局事务。如果另一个非 XA 数据源连接试图加入,就会产生异常。

J2EE开发者有两个事务管理的选择: 全局  本地 事务。全局事务由应用服务器管理,使用JTA。局部事务是和资源相关的,比如一个和JDBC连接关联的事务。这个选择有深刻的含义。例如,全局事务可以用于多个事务性的资源(典型例子是关系数据库和消息队列)。使用局部事务,应用服务器不需要参与事务管理,并且不能帮助确保跨越多个资源(需要指出的是多数应用使用单一事务性的资源)的事务的正确性。

全局事务 全局事务有一个重大的缺陷,代码需要使用JTA:一个笨重的API(部分是因为它的异常模型)。此外,JTAUserTransaction通常需要从JNDI获得,这意味着我们为了JTA,需要 同时 使用JNDI JTA。显然全部使用全局事务限制了应用代码的重用性,因为JTA通常只在应用服务器的环境中才能使用。 以前,使用全局事务的首选方式是通过EJB CMT容器管理事务):CMT 声明式事务管理 的一种形式(区别于 编程式事务管理)。EJBCMT不需要任何和事务相关的JNDI查找,虽然使用EJB本身肯定需要使用JNDI。它消除了大多数(不是全部)硬编码的方式去控制事务。重大的缺陷是CMT绑定在JTA和应用服务器环境上,并且只有我们选择使用EJB实现业务逻辑,或者至少处于一个事务化EJB的外观(Facade)后才能使用它。EJB有如此多的诟病,尤其是存在其它声明式事务管理时,EJB不是一个吸引人的建议。

本地事务本地事务容易使用,但也有明显的缺点:它们不能用于多个事务性资源。例如,使用JDBC连接事务管理的代码不能用于全局的JTA事务中。另一个缺点是局部事务趋向于入侵式的编程模型。

目录
相关文章
|
8月前
|
关系型数据库 MySQL 数据库
【MySQL实战笔记】 06 | 全局锁和表锁 :给表加个字段怎么有这么多阻碍?-01
【4月更文挑战第17天】MySQL的锁分为全局锁、表级锁和行锁。全局锁用于全库备份,可能导致业务暂停或主从延迟。不加锁备份会导致逻辑不一致。推荐使用`FTWRL`而非`readonly=true`因后者可能影响其他逻辑且异常处理不同。表级锁如`lock tables`限制读写并限定操作对象,常用于并发控制。元数据锁(MDL)在访问表时自动加锁,确保读写正确性。
166 31
|
5月前
|
运维 监控 关系型数据库
全局事物服务GTS
【8月更文挑战第22天】
66 0
|
5月前
|
算法
分布式锁设计问题之重建节点锁信息时要分为多个阶段如何解决
分布式锁设计问题之重建节点锁信息时要分为多个阶段如何解决
|
8月前
|
缓存 NoSQL Java
事务问题的常用处理思路
事务问题的常用处理思路
|
Oracle 关系型数据库 MySQL
23JavaWeb基础 - 事务的特性
23JavaWeb基础 - 事务的特性
66 0
|
XML Java 数据库
Spring 事务传播机制、隔离级别以及事务执行流程源码结合案例分析(下)
Spring 事务传播机制、隔离级别以及事务执行流程源码结合案例分析(下)
145 0
Spring 事务传播机制、隔离级别以及事务执行流程源码结合案例分析(下)
|
SQL Oracle Java
Spring 事务传播机制、隔离级别以及事务执行流程源码结合案例分析(上)
Spring 事务传播机制、隔离级别以及事务执行流程源码结合案例分析
97 0
|
存储 Oracle 关系型数据库
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
从源码角度,分析PG事务号分配机制和防止事务号回卷
典型的顺序死锁
典型的顺序死锁
108 0
|
关系型数据库 MySQL Java
实战分析:事务的隔离级别和传播属性(上)
实战分析:事务的隔离级别和传播属性(上)
实战分析:事务的隔离级别和传播属性(上)