Flex解决方案中的事务:可能性一:JTA

-------------------以下引用一个网友对主题的回复

JTA只是编程接口的标准, 需要底层有Transaction Manager才能工作,Sun有个Java Transaction Service(JTS)的标准,来规范Transaction Manager,JOTM是个开源的对JTS的实现。

JTA/JTS是分布式事务处理(跨越多个数据库),如果只对一个数据库读写,完全没有必要用JTA/JTS,这些操作的代价是很高的,JDBC Connection的commit, rollback足已。

要在业务逻辑里,不用自己编程进行事务处理,据我知只有两种方法,1,EJB, 2, Spring. 要不你自己用AspectJ编个类似的来,够累啊。

以为要用JTA编程,就不用把Connection传来传去么,除了Connection要传,还要传个JTA的UserTransaction.

Java代码
import javax.transaction.*;
import javax.naming.*;
// ...
InitialContext ctx = new InitialContext();
Object txObj =
ctx.lookup("java:comp/UserTransaction");
UserTransaction utx = (UserTransaction) txObj;

utx.begin();
// ...
DataSource ds = obtainXADataSource();
Connection conn = ds.getConnection();
pstmt = conn.prepareStatement("UPDATE MOVIES ...");
pstmt.setString(1, "Spinal Tap");
pstmt.executeUpdate();
// ...
utx.commit();
// ...

import javax.transaction.*;
import javax.naming.*;
// ...
InitialContext ctx = new InitialContext();
Object txObj =
ctx.lookup("java:comp/UserTransaction");
UserTransaction utx = (UserTransaction) txObj;

utx.begin();
// ...
DataSource ds = obtainXADataSource();
Connection conn = ds.getConnection();
pstmt = conn.prepareStatement("UPDATE MOVIES ...");
pstmt.setString(1, "Spinal Tap");
pstmt.executeUpdate();
// ...
utx.commit();
// ...


还是用Spring吧,要不就把Connection传来传去。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值