首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

EJB事宜属性

2012-08-25 
EJB事务属性事务属性控制事务的作用域。事务属性可以是如下几个值之一:Required,RequiresNew,Mandatory,Not

EJB事务属性
事务属性控制事务的作用域。

事务属性可以是如下几个值之一:

Required,RequiresNew,Mandatory,NotSupported,Supports,Never.

1、Required

     如果客户端正运行在某个事务中运行,且调用了EJB中的方法,则该方法在客户端的事务中运行。如果客户端没有与某个事务相关联,则容器在运行方法前先启动一个新事务。

     Required属性适合绝大多数事务,建议把它设置成默认的,至少在开发阶段。事务属性是声明式的,后期也可以很容易的修改。

2、RequiresNew

    如果客户端运行在某个事务中,并且调用了EJB中的方法,则容器将采用如下操作:

   (1) 挂起客户端事务

   (2) 启动一个新事务

   (3) 把调用委派给方法

   (4) 方法执行完毕之后,回复客户端事务

    如果客户端没有与某个事务相关联,则容器在运行方法前先启动一个新事务。

    如果确保方法始终在一个新事务中运行,应该使用RequiresNew属性。

3、Mandatory

     如果客户端运行在某个事务中且调用了EJB中的方法,则该方法运行在客户端事务中。

     如果客户端没有与某个事务相关联,则容器抛出TransactionRequiredException。

     如果EJB中的方法必须使用客户端的事务,则应该使用Mandatory属性。

4、NotSupported

     如果客户端在某个事务中运行且调用了EJB中的方法,则容器先挂起客户端事务,调用方法结束之后回复客户端事务。

    如果客户端没有与某个事务相关联,则容器在运行方法前不启动事务

    对于不需要事务的方法,可以考虑该属性。事务需要一定的开销,NotSupported属性可以提高性能。

5、Supports

     如果客户端运行在某个事务中且调用了EJB中的方法,则该方法运行在客户端的事务中。

     如果客户端没有与某个事务关联,则容器运行方法前不启动新的事务。

6、Never

     如果客户端运行在某个事务中且调用了EJB中的方法,则容器抛出RemoteException异常。如果客户端没有与某个事务关联,则容器运行方法之前不启动新的事务。

热点排行