JTA

 

1 JTA 是什么?
    JTA ,是 Java Transaction API Java 事务处理 API ,完成 Java 应用中的事务处理。
2 、什么是事务?
    由若干具体操作组成的不可分割的逻辑单元。经典的例子是转帐,从一个账户向另外一个账户转帐,主要操作两个:从第一个账户扣钱,向第二个账户加钱。这两个操作要么同时成功,要么同时失败。
3 、事务处理是干什么的?
    事务处理要保证事务所涉及的所有操作要么都成功,要么都不执行。例如对于上面的转账来说,如果两个操作都成功,事务就正常结束。如果第一个操作失败,第二个操作就不执行了。如果第一个成功,第二个失败,应该撤销第一个操作(回滚)。
4 、使用 JDBC 进行事务处理
默认情况下,数据库的操作是自动提交。执行一句,结果就会影响到数据库。如果后面执行出错,不会影响前面的内容。
为了进行事务处理,需要把自动提交方式修改为手动提交。通过下面的代码:
con.setAutoCommit(false);
执行完之后需要手动提交,使用下面的代码;
con.commit();
执行出错的时候要回滚已经执行的操作,代码:
con.rollback();
以订单添加为例。
try{
   con.setAutoCommit(false); // 取消自动提交
   // 生成订单
   stmt.executeUpdate(sql); // 插入订单基本信息
   for(…){
      stmt.executeUpdate(sql2); // 插入订单明细
   }
   con.commit(); // 提交
}catch(Exception e){
   con.rollback(); // 回滚操作
}finally{
   …
}
5 、使用 JTA 进行事务处理
应用服务器通常会提供事务处理服务,用户可以通过 JTA 来使用应用服务器提供的事务处理服务。事务处理服务对象绑定在 JNDI 树上。
使用过程:
连接到 JNDI 树,从 JNDI 树上查找事务处理对象;
开始事务;
执行事务相关的操作;
提交事务;
回滚事务(异常的时候)。
以订单生成为例。
UserTransaction utx; // 事务处理对象
try{
   // 连接到 JNDI
   Context ctx = new InitialContext(p);
   // 查找事务处理对象
utx = (UserTransaction)ctx.lookup(“javax.transaction.UserTransaction”);
       // 开始事务
       utx.begin();
       // 执行与事务相关的操作
       …
       // 提交事务
       utx.commit();
}catch(Exception e){
   // 产生异常的时候,回滚已经执行的操作
   utx.rollback();
}finally{
}
6 、声明式事务处理和编程方式的事务处理
上面介绍的是编程方式的事务处理,在代码中自己来控制事务的开始、提交、回滚。
声明方式的事务处理需要通过配置文件或者注释方式告诉容器(应用服务器)需要什么样的事务处理,通过容器控制事务的开始、提交和回滚。在 EJB 部分介绍。
7 、服务器是如何实现事务处理的?
   服务器的事务处理过程使用各种被管理资源本身提供的事务处理。具有集成的作用。

李绪成 优快云 Blog http://blog.youkuaiyun.com/javaeeteacher

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值