首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EJB事务中的默认属性

EJB事务中的默认属性
EN

Stack Overflow用户
提问于 2013-12-31 16:13:05
回答 3查看 12.7K关注 0票数 14

我阅读了java ee文档,我想问几个问题,以确保我已经很好地理解了EJB-事务是怎么回事。

1) docs声明defaalt TransactionManagement值为CONTAINER,默认TransactionAttribute值为REQUIRED:如果是,下面的(会话) Bean使用CONTAINER托管事务和属性REQUIRED执行其所有方法,对吗?

代码语言:javascript
复制
@Stateless
public class MyBean{

public void methodA(){
...
}

public void methodB(){
...
}

}

2) docs状态:Container-managed transactions do not require all methods to be associated with transactions. When developing a bean, you can set the transaction attributes to specify which of the bean’s methods are associated with transactions.

如果我忽略了TransactionAttributeType,它不是自动设置为REQUIRED吗?下面的Bean中的methodB与事务无关吗?

代码语言:javascript
复制
@Stateless
@TransactionManagement(CONTAINER)
public class MyBean{

@TransactionAttribute(MANDATORY)
public void methodA(){
...
}

public void methodB(){
...
}

}
EN

回答 3

Stack Overflow用户

发布于 2014-01-01 16:57:30

  1. 是的,CONTAINERREQUIRED是默认的。
  2. 你说的话似乎来自Java 5教程。我同意这句话有点令人费解。这里有一个可能的重写可能会有所帮助。

容器管理事务并不要求所有方法都使用默认的所需事务语义。在开发bean时,可以通过设置事务属性来更改事务语义。例如,可以通过使用“从不事务”属性指定在没有任何事务的情况下运行方法,

票数 10
EN

Stack Overflow用户

发布于 2014-01-01 16:57:12

  1. 默认情况下,方法具有所需的事务设置。因此,methodB()需要
票数 1
EN

Stack Overflow用户

发布于 2019-01-30 07:55:50

1-是的。

2- methodB()具有必需属性,因为它是默认属性,但是您可以用任何其他选项覆盖这个默认属性,比如(从不,REQUIRED_NEW,支持.等)。

但是,容器仍然有在系统异常情况下回滚事务的控件,但您仍然能够通过调用setRollbackOnly方法回滚事务。

有两种方法可以回滚容器管理的事务。首先,如果抛出系统异常,容器将自动回滚事务。其次,通过调用setRollbackOnly接口的EJBContext方法,bean方法指示容器回滚事务。如果bean抛出应用程序异常,则回滚不是自动的,而是可以通过调用setRollbackOnly来启动。

https://docs.oracle.com/cd/E19798-01/821-1841/bnciv/index.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20860079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档