一、事务分类
从开发角度看事务分为数据库事务和Java事务。
二.、二者联系
实际上,一个Java应用系统,如果要操作数据库,则通过JDBC来实现。增删改查都通过相应方法间接实现,事务控制也相应转移到Java程序代码中。
因此,数据库操作的事务习惯上就称为Java事务。
三、Java事务分类
Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务。
1. JDBC 事务是用 Connection 对象控制的。
2. JTA 事务的JDBC 连接是XAConnection。
3. 容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。
四、三种事务差异
1、JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。
2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。
3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用使用。
--------------------------------------------这里我们着重看分布式事务------------------------------------
五、XA
XA是由X/Open组织提出的分布式事务的规范。
XA规范定义了事务管理器和资源管理器之间的接口(如图1)。
XA是一个双向接口(如图1)。
图1
XA模型组成
XA 模型由资源管理器、资源适配器、事务管理器组成。
那么什么是资源管理器、资源适配器呢?
首先,要明确资源就是数据。
其次,如下…
资源管理器à数据管理器如:数据库、JMS、文件系统
资源适配器(实现XA相关接口的驱动)à数据库驱动如:mysql.jar
事务管理器à J2EE容器所提供的JTA实现(如JBOSS)、独立的JTA实现(如:JOTM、Atomikos)。
备注:要支持多数据源的事务,只能用JTA事务管理,而且应用服务器还不能是Tomcat。
即tomcat没有提供容器JTA实现,必须用独立的JTA实现来支持分布式事务。
XA模型之间关系
资源适配器允许事务管理器协调该资源管理器和其他资源管理器之间的分布式事务。
通俗点讲就是:可以配置资源适配器(即jar包) 以指明资源管理器(如JMS或数据库) 提供者是否支持 XA。
再通俗点就是:在资源适配器中添加对xa的支持就是添加数据源对xa的支持也就是说添加connnection对xa的支持。
XA出现的目的
XA是为了支持二阶段提交协议,但是它也支持一阶段提交协议。
本地事务只支持一阶段提交。
分布式事务默认采用的是二阶段提交,如果在分布式事务中非得使用一阶段提交协议,那么只要数据源多余一个就会抛出异常,如果只有一个数据源则正确执行。
XA的使用时机
当多个资源必须在同一个事务范畴内被协调时,才有必要用到XA。
由于XA支持“只读优化”,当把一个只读数据源引入XA事务时,您可能并不会看到任何的性能损失。
Spring中的分布式事务
spring不支持分布式事务,只能用JtaTransactionManager 提供对分布式事务管理的支持,并将事务管理委托给Java EE应用服务器事务管理器, Tomcat作为容器则它本身不支持JTA事物,所以需要用到第三方库(如jotm,atomikos)。
相关推荐
### Java事务总结 #### 事务的基本概念与属性 在计算机科学中,特别是在数据库管理系统中,**事务**是一种机制,用于确保一系列操作作为一个整体被执行。事务包含三个基本的行为:开始事务、提交事务以及回滚事务...
- 示例:事务A第一次读取某数据集合后,事务B在事务A的第二次读取前插入了一些新的数据,导致事务A第二次读取时发现多了新的数据。 #### 四、事务隔离级别 为了解决上述事务并发问题,数据库提供了不同的事务隔离...
当我们谈论"Java事务"时,我们通常指的是在多条SQL语句执行过程中保持数据完整性的一种方法。以下是一个简化的Java事务处理代码示例,适用于初学者理解和学习。 首先,我们需要了解Java中的JDBC(Java Database ...
在这个过程中,如果网络出现问题导致第二步操作失败,但第一步已经完成,那么就会出现数据不一致的情况。为了防止这种情况发生,需要使用事务将这两步操作包装在一起,确保要么两步都成功,要么两步都不执行,从而...
在《疯狂java实战演义》的第10章中,作者探讨了如何构建一个事务跟踪系统,该系统在企业应用中扮演着重要的角色,帮助管理和监控事务的处理流程。以下是该章节涉及的主要知识点: 1. **事务跟踪系统的基本概念**:...
1. **日期处理库**: Java中,`java.time`包提供了强大的日期时间处理功能,例如`LocalDate`类用于处理日期,`DayOfWeek`枚举表示一周中的日子。我们可以通过这些类获取每年每一天的详细信息,如判断是否为工作日、...
Spring还提供了一个强大的AOP框架,允许开发者将关注点从核心业务逻辑中分离出来,例如日志记录、事务管理等,实现代码的高内聚。Spring容器负责对象的生命周期管理和配置,而Spring框架本身则提供了诸如事务管理、...
java.security.interfaces 提供的接口用于生成 RSA Laboratory Technical Note PKCS#1 中定义的 RSA(Rivest、Shamir 和 Adleman AsymmetricCipher 算法)密钥,以及 NIST 的 FIPS-186 中定义的 DSA(数字签名算法)...
1. **Java基础语法**:这是学习Java的第一步,包括变量、数据类型(基本类型与引用类型)、运算符、控制流(条件语句、循环语句)、数组、字符串类(String)的使用以及方法的定义和调用。理解这些基础知识是编写任何...
在深入探讨Java事务处理的关键概念之前,我们先来理解一下事务的基本定义及其在数据库操作中的重要性。事务是数据库管理中的一个关键概念,它确保了一系列操作要么全部成功,要么全部失败,从而保持了数据的一致性和...
Java三大框架,指的是Servlet、Hibernate和Spring,它们是Java Web开发中的核心组件,极大地提高了开发效率和代码质量。下面是对这三个框架的详细说明。 Servlet是Java服务器端编程的基础,它提供了一种标准的方法...
该资源是一个 Java 开发者的面试总结,涵盖了 JavaSE、IO、面向对象、反射、多线程、JDK8 新特性、MySQL、JDBC、Java WEB、servlet、Thymeleaf、Tomcat、VUE、ElementUI、Ajax、SSM、SpringBoot、SpringCloud、...
班级事务-班级事务系统-班级事务系统源码-班级事务管理系统-班级事务管理系统java代码-班级事务系统设计与实现-基于ssm的班级事务系统-基于Web的班级事务系统设计与实现-班级事务网站-班级事务网站代码-班级事务平台...
班级事务系统代码 java班级事务系统代码 基于SSM的班级事务系统代码 1、班级事务系统的技术栈、...有任何使用问题欢迎随时与博主沟通,第一时间进行解答! 3、解压说明:本资源需要电脑端使用WinRAR、7zip、Bandiz
以上是对"java精通+开发案例 经典经典总结"这一主题的详尽解析,涵盖了从基础到进阶,再到实际应用的各个层面。通过深入学习和实践,可以提升Java开发者的专业技能,为解决各种复杂的软件问题打下坚实基础。
- 缓存策略调整,如第一级缓存(EntityManager级别的)和第二级缓存(SessionFactory级别的)的配置。 - 优化查询,避免N+1查询问题,使用JOIN fetch进行关联查询。 - 配置实体的访问策略,如字段或属性访问,...
第四章的主题通常会涉及Java EE的核心技术,如Servlet、JSP、JDBC以及JavaBeans等,而第1节的源代码可能涵盖这些技术的初步应用。 Java EE(Enterprise Edition)是Java平台的一个版本,专为开发企业级应用而设计。...