为学日益,为道日损。
4.什么是JTA Transaction?它有怎样的特点呢?JTA Transaction是指由J2EE Transaction manager去管理的事务。其最大的特点是调用UserTransaction接口的begin,commit和rollback方法来完成事务范围的界定,事务的提交和回滚。JTA Transaction可以实现同一事务对应不同的数据库,但是它仍然无法实现事务的嵌套。具体的代码如下[1]:
5.什么是Container-Managed Transaction?它又有怎样的特点呢?Container-Managed Transaction,顾名思义,就是由Container负责管理的Transaction,当然这样Transaction是出现在EJB的范畴中。Container-Managed Transaction最大的特点是不需要显式界定事务的边界,也不需要显式的提交或者回滚事务,这一切都由Container来替我们完成。我们需要做的就是设定在一个Bean中,哪些方法是跟事务相关的,同时设定它们的Transaction Attribute既可。 Transaction的Scope是相当重要的,特别是在一个Bean的方法中调用另外一个Bean的方法。为了便于说明问题,我们把这两个方法分别称为methodA和methodB。当methodA调用methodB的时候,methodB在事务的层面上对调用者methodA有怎样的限制(methodB中是否存在事务)以及methodA如何在事务的层面上实现对methodB的调用(是否需要重新创建一个新的事务来处理methodB的调用)都需要通过Transaction Attribute来设定的。具体的Transaction Attribute有以下六种:Required,RequiresNew,Mandatory,NotSupported,Supports和Never。有关Transaction Attribute的介绍,可以参阅J2EE Tutorial中关于Container-Managed Transaction的介绍。 [1] 代码来自SUN的J2EE Tutorial中关于Bean-Managed Transaction的介绍
Powered by: BlogJava Copyright © 放水老倌