论坛首页 入门技术论坛

JAVAEE Transaction (1)

浏览 1165 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-03-04  
1.什么是事务
    为了保证数据的一致性
    begin transaction
        debit checking account
        credit saving account
        update history log
    end trasaction
    其中任意的三个操作要么都执行,要么都不执行,否则就不能保证数据的一致性。
2.容器管理的事务
    在容器管理的enterprise bean, EJB 容器设置事务的边界。容器管理的事务可以被
用到任何类型的bean(session bean,entity bean,message-driven bean)。容器管理事务
可以简化开发,开发中无需明确包含开启事务和关闭事务代码。
    容器事务在bean方法调用前开启,在bean方法结束前结束。一个方法是不能嵌套事务和
包含多个事务。
    不是所有的bean方法都要求是事务管理的,在部署bean时我们可以通过设置事务的属性
配置哪些方法是不容器事务管理的。
   2.1 如果对象A的a方法调用对象B的b方法,如果a方法属于事务,那么b方法是再开启个新事务
还是在原来的事务中呢?这个依赖于对象B的事务属性设置。
       Required : 当一个方法被客户调用,这个客户在事务中运行,那么这个方法也在事务
中运行,否则容器会在这个方法运行前启动事务。
       RequiredNew : 容器会始终为这个方法开启一个新的事务,如果客户端是在事务中,那
  么容器会悬挂客户端的事务执行,开启一个新的事务为这个方法,等结束后再继续客户端的
  事务运行。
       Mandatory:bean的方法必须在客户端的事务中运行,否则容器会抛出异常。
       NotSupported :如果客户端在事务中运行时调用bean的方法,容器会悬挂事务的执行,
   等bean方法执行完后再继续刚才的事务。
       Supports : 如果客户端是在事务中运行时调用bean的方法,那么这个方法也在事务中运行,
   如果客户端没有在事务中运行,那么容器也不会开启一个事务。
       Never :bean的方法不能在事务中运行,否则会抛出异常。<!---->
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics