什么是JTA?

JTA全称Java Transaction API ,即Java事务API,英文解释:

Java Transaction API (JTA) specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system: the resource manager, the application server, and the transactional applications.

JTA是一种高层的,与实现无关的,与协议无关的API,应用程序和应用服务器可以使用JTA来访问事务。

JTA允许应用程序执行分布式事务处理--在两个或多个网络计算机资源上访问并且更新数据,这些数据可以分布在多个数据库上。JDBC驱动程序的JTA支持极大地增强了数据访问能力。

JTA的主要接口:

位于javax.transaction包中

a、UserTransaction接口:让应用程序得以控制事务的开始、挂起、提交、回滚等。由Java客户端程序或EJB调用。
b、TransactionManager 接口:用于应用服务器管理事务状态
c、Transaction接口:用于执行相关事务操作
d、XAResource接口:用于在分布式事务环境下,协调事务管理器和资源管理器的工作
e、Xid接口:为事务标识符的Java映射

注:前3个接口位于Java EE版的类库 javaee.jar 中,Java SE中没有提供!UserTransaction是编程常用的接口。JTA只提供了接口,没有具体的实现。

JTA需要满足的条件:

如果使用 JTA 界定事务,那么就需要有一个实现 javax.sql.XADataSource 、 javax.sql.XAConnection 和 javax.sql.XAResource 接口的 JDBC 驱动程序。一个实现了这些接口的驱动程序才可以参与 JTA 事务。

一个 XADataSource 对象就是一个 XAConnection 对象的工厂。 XAConnection 是参与 JTA 事务的 JDBC 连接。要使用JTA事务,必须使用XADataSource来产生数据库连接,产生的连接为一个XA连接。

XA连接(javax.sql.XAConnection)和非XA(java.sql.Connection)连接的区别在于:

XA可以参与JTA的事务,而且不支持像JDBC那样的自动提交

同时,应用程序一定不要对 XA 连接调用 java.sql.Connection.commit() 或者 java.sql.Connection.rollback() 。相反,应用程序应该使用 UserTransaction.begin()、 UserTransaction.commit() 和 serTransaction.rollback() 。

注意: Oracle, Sybase, DB2, SQL Server等大型数据库才支持XA, 支持分布事务。 MySQL属于Non-XA。

JTA编程的基本步骤
a、首先配置JTA ,建立相应的数据源
b、建立事务:通过创建UserTransaction类的实例来开始一个事务。代码如下:
  Context ctx = new InitialContext(p) ;
   UserTransaction trans = (UserTransaction) ctx.lookup("javax. Transaction.UserTransaction")
c、开始事务:代码为 trans.begin() ;
d、找出数据源:从Weblogic Server上找到数据源,代码如下:
 DataSource ds = (DataSource) ctx.lookup(“mysqldb") ;
e、建立数据库连接:Connection mycon = ds.getConnection() ;
f、执行SQL操作:stmt.executeUpdate(sqlS);
g、完成事务:trans.commit(); / trans.rollback();
h、关闭连接:mycon.close() ;

事务管理之JTA事务相关推荐

  1. java jdbc事务管理_hibernate事务管理 (jdbc jta)

    评论 # re: hibernate事务管理 (jdbc jta) 2007-07-29 10:18 pig JTA事务的开始 Transaction tx = session.beginTransa ...

  2. Spring事务管理-》Spring事务管理(annotation)

    5.6 使用@Transactional 除了使用XML类型的事务管理,同时Spring也提供了Annotation类型的事务管理.如下所示: 一:Spring事务管理 =============== ...

  3. Java开发【Spring之AOP详解(xml--注解->方法增强、事务管理(声明事务的实现))】

    文章目录 引入 一.AOP概述 1.什么是AOP 2.AOP的优势及使用场景 3.AOP实现原理 二.代理模式 1.代理模式概念 2.代理模式分类 3.静态代理演示 定义HouseAgencyComp ...

  4. spring配置mysql事务管理_Spring 数据库事务管理机制

    要点1 Spring事务管理方法编程式事务(TransactionTemplate.PlatformTransactionManager) 声明式事务(配置式.注解式) 2 Spring 注解 @Tr ...

  5. Spring的事务管理和数据库事务相关知识

    1 初步理解 理解事务之前,先讲一个你日常生活中最常干的事:取钱.         比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱. ...

  6. spring框架学习 - Data Access之 事务管理 - 声明式事务管理

    接上一篇博客:https://blog.csdn.net/qq_43605444/article/details/122085016?spm=1001.2014.3001.5502 4.声明式事务管理 ...

  7. Spring事务管理3----声明式事务管理(1)

     声明式事务管理(1)基于    基于 tx/aop  这种事务管理相比编程式事务管理来说对业务层基本没有改动,通过  TransactionProxyFactoryBean 创建业务层的代理,通过A ...

  8. 基于AOP的事务管理与普通事务管理有什么区别?

    为什么80%的码农都做不了架构师?>>>    (一) 用编程的方法来实现,我觉得这种方法比较灵活,控制起来比较方便,但是需要写一些额外的代码 <!--定义Bean--> ...

  9. Spring事务管理--(一)数据库事务隔离级别与mysql引擎基础讲解

    一.前言 本篇文章来自网络整理,很简单,但是很实用对于初级和中级工程师. 原创地址1:http://www.cnblogs.com/hollen/archive/2012/05/13/2498309. ...

最新文章

  1. C# TCP sever client
  2. adb安装软件_安卓手表ADB实用工具箱:给你的安卓手表来点不一样的
  3. serialVersionUIDtransient
  4. java并发之线程封闭(二)
  5. SAP CRM partner主数据的地址格式设计
  6. css连续的纯数字或字母强制换行
  7. java线程等待_java 中线程等待与通知的实现
  8. 力扣404. 左叶子之和(JavaScript)
  9. 升级至 vCenter Server 6.5 的最佳实践 (2147686)
  10. 关于oc中自动引用计数 小结
  11. 如何将位图格式图片文件(.bmp)生成geotiff格式图片?
  12. Win2012 R2 IIS8.5+PHP(FastCGI)+MySQL运行环境搭建教程
  13. 电子商务信息整合平台方案
  14. python矩阵计算器心得_矩阵类计算器Python
  15. C++学习第九课--类的成员函数、对象复制与私有成员笔记
  16. wxj项目的开发一点记录
  17. Nginx通过OpenSSL创建自签名证书配置HTTPS及二级目录
  18. 【回炉重造】带你搞懂什么是机器学习?
  19. Proteus C51仿真学习板0——KeilProteus
  20. java打印大风车的代码_自定义View之大风车系列demo(一)

热门文章

  1. Sql Server数据库中的用户及权限配置,保障数据库安全
  2. HTML编写script,script
  3. HTML标签检查工具
  4. 909.在线mp3音量调整
  5. 11个基于HTML/CSS/JS的情人节表白可爱小游戏、小动画
  6. uboot启动的第二阶段分析
  7. 西邮Linux兴趣小组2020纳新试题
  8. vue基于el-timeline组件实现动态表格时间线
  9. 数据库日常管理常用sql脚本
  10. c与java的中文乱码_Java 中文乱码问题总结