2008-04-10

EJB3学习笔记之 EJB3中的注释(五)

关键字: ejb3 ejb注释 ejb学习笔记

 

10.       事务管理服务

最有用的容器服务可能就是事务管理服务,当应用出现失败或异常时,它保证了数据库的完整性。你可以简单地将为一个 POJO 方法申明它的事务属性。这样容器就可以在合适的上下文中运行这个方法。最常见的事务是定义在 session bean 的方法上,方法中所有的数据库操作只有在方法正常退出时才会提交,如果方法抛出未捕获的异常,事务管理将回滚所有的变更。

@TransactionAttribute 注释用作定义一个需要事务的方法。例如:

@TransactionAttribute(TransactionAttributeType.REQUIRED)

public void insertProduct(String name, Float price, boolean error) {

       

       

}

它可以有以下参数:

a.         REQUIRED : 方法在一个事务中执行,如果调用的方法已经在一个事务中,则使用该事务,否则将创建一个新的事务。

b.         MANDATORY : 方法必须在一个事务中执行,也就是说调用的方法必须已经有一个事务,否则新抛出一个错误( ERROR )。

c.         REQUIRESNEW : 方法将在一个新的事务中执行,如果调用的方法已经在一个事务中,则暂停旧的事务。

d.         SUPPORTS : 如果方法在一个事务中被调用,则使用该事务,否则不使用事务。

e.         NOT_SUPPORTED :如果方法在一个事务中被调用,将抛出一个错误( ERROR

如果没有指定参数, @TransactionAttribute 注释使用 REQUIRED 作为默认参数。

11.       Entity 的生命周期和状态

EJB3 中定义了四种 Entity 的状态:

a.         新实体 (new) Entity 由应用产生,和 EJB3 Persistence 运行环境没有联系,也没有唯一的标示符 (Identity)

b.         持久化实体 (managed) 。新实体和 EJB3 Persistence 运行环境产生关联(通过 persist(), merge() 等方法 ) ,在 EJB3 Persistence 运行环境中存在和被管理,标志是在 EJB3 Persistence 运行环境中有一个唯一的标示 (Identity)

c.         分离的实体 (detached) Entity 有唯一标示符,但它的标示符不被 EJB3 Persistence 运行环境管理 , 同样的该 Entity 也不被 EJB3 Persistence 运行环境管理。

d.         删除的实体 (removed) Entity remove() 方法删除,对应的纪录将会在当前事务提交的时候从数据库中删除。

 

EJB3学习笔记之 EJB3中的注释(一)

EJB3学习笔记之 EJB3中的注释(二)

EJB3学习笔记之 EJB3中的注释(三)

EJB3学习笔记之 EJB3中的注释(四)

EJB3学习笔记之 EJB3中的注释(五)

评论
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

julycn
搜索本博客
我的相册
0a46256d-c842-3a98-84ca-5ee90d4e18ae-thumb
untitled.JPG
共 12 张
存档
最新评论