我了解到的一些transaction有cmt, bmt, jdbc, jta, global, local, user我被这些概念搞糊涂了,求高手全面讲解一下这些transaction的关系以及大概的思想,还有它们都是哪些组织制定的

解决方案 »

  1.   

    你先从最基础的数据库事务开始了解起吧..
    暂时不用去管那些诸多规范..
    找个数据库oracle或者sql server,开始深入学习其事务特性就行..
      

  2.   

    cmt:容器管理事务
    bmt:bean自己管理事物
    jdbc:是套操作数据库的接口
    jta:Java Transaction API
    global:估计你的意思是指全局事务,站在一个更高的层次上去看待事务,可以同时操作多个数据库,而且还可以保持操作多个数据库时事务的一致性,原子性,隔离性,持久性。用JTA可以实现全局事务,内部实现是二次提交协议
    local:本地事务,通常只能操作一个数据库,直接用数据库的事务处理
    user:?
      

  3.   

    基本概念我也知道,这些事务经常会用到,只是一直没弄明白它们的关系和区别下面我的一些理解,也不知道对不对,所以想请高手给指正一下:
    1. 在j2ee的规范里,transaction分为cmt和bmt, bmt就是指的jta. cmt和bmt的区别大家应该都知道; jta又可以使用jdbc或普通的user transaction。至于user transaction, 应该是jta里的一个interface。
    (jdbc这里指的是jdbc transaction,不是说的jdbc)2. global和local好像是IBM提出的一个概念,区别就在于是二次提交还是一次提交。使用上的区别就是看用的是xa的datasouce还是普通的datasource. 好像都可以用jta来实现。global和local都是jta的东西我的一些疑惑:
    1. 当需要跨不同类型的database时,jdbc和global就是一回事,就是指的用jta来操作xa的datasource
    2. 求一个global的例子。二次提交怎么指定什么时候做第一次提交,什么时候做第二次