现在的位置: 首页 > 综合 > 正文

声明性事务管理的事务属性介绍(适用于COM+/EJB CMT)

2013年06月06日 ⁄ 综合 ⁄ 共 779字 ⁄ 字号 评论关闭

最近看《Mastering EJB》(3rd)呢,正好看到CMT的部分,其中对声明性事务管理的事务属性进行了介绍,感觉介绍的真是精辟易懂,就摘抄如下:

EJB CMT中共有6种属性:Required, RequiresNew, Supports, Mandatory, NotSupported, Never
COM+
中记得是5种:即除了Mandatory之外的那5个。

这些属性的控制粒度可以达到方法级,含义分别如下:
    [1] Required

   
必须运行于事务中。如果有事务已在运行,则参与;否则新建事务。
    [2] RequiresNes

   
总是启动新的事务。
    [3] Supports

   
跟随客户端的事务。如果有事务在运行,则参与;否则不要求运行于事务中。
    [4] Mandatory

   
要求客户端必须启动事务,否则就抛出异常给客户端。(这个属性COM+中没有)
    [5] NotSupported

   
不会参与到事务中,无论客户端是否启动事务。
    [6] Never

   
不能参与到事务中。如果客户端已经启动事务,则抛出异常给客户端。

最后给出一个示例表格,可以通俗易懂的表达出上边的各个概念:

事务属性

客户端的事务

标记属性的组件的事务

Required

T1

T2

T1

RequiresNew

T1

T2

T2

Supports

T1

T1

Mandatory

T1

异常

T1

NotSupported

T1

Never

T1

异常

 

关于事务隔离性的入门知识,可以参考我写的这篇文章:

 http://interma.cnblogs.com/archive/2005/12/25/304472.html

最后,说一个无关的,尽管现在大家都在喊Without EJBWithoutEJB,但是通过最近对EJB的学习,至少我感觉EJB(的目标)真的看上去很美。 :-)

抱歉!评论已关闭.