Jakarta ee EJB事务中的默认属性
我正在阅读,我想问几个问题,以确保我已经很好地理解了EJB事务 1) 文档说明defaltJakarta ee EJB事务中的默认属性,jakarta-ee,transactions,ejb,Jakarta Ee,Transactions,Ejb,我正在阅读,我想问几个问题,以确保我已经很好地理解了EJB事务 1) 文档说明defaltTransactionManagement值为CONTAINER,默认的TransactionAttribute值为REQUIRED:如果是,以下(会话)是否正确Bean使用容器托管事务和属性REQUIRED执行其所有方法 @Stateless public class MyBean{ public void methodA(){ ... } public void methodB(){ ... }
TransactionManagement
值为CONTAINER
,默认的TransactionAttribute
值为REQUIRED
:如果是,以下(会话)是否正确Bean使用容器托管事务和属性REQUIRED
执行其所有方法
@Stateless
public class MyBean{
public void methodA(){
...
}
public void methodB(){
...
}
}
2) 文档状态:容器管理的事务不要求所有方法都与事务关联。在开发bean时,可以设置事务属性来指定bean的哪些方法与事务关联。
但是,如果我省略了事务属性类型
,它是否会自动设置为必需的
?下面Bean中的方法b
是否与事务无关
@Stateless
@TransactionManagement(CONTAINER)
public class MyBean{
@TransactionAttribute(MANDATORY)
public void methodA(){
...
}
public void methodB(){
...
}
}
对
默认情况下,方法需要事务设置。因此methodB()是必需的
是,容器
和必需
是默认值
你所说的话似乎来自于。我同意那个句子的措辞有些混乱。这里有一个可能的重写可能会有所帮助
容器管理的事务不要求所有方法都使用
默认必需的事务语义。当开发一个bean时,您需要
可以通过设置事务来更改事务语义
属性。例如,您可以指定一个方法应该运行
通过使用NEVER transaction属性没有任何事务
1-是的
2-methodB()具有REQUIRED属性,因为它是默认属性,但您可以使用任何其他选项(从不、REQUIRED\u NEW、SUPPORTED…等)覆盖此默认属性
但是,容器仍然可以控制在发生系统异常时回滚事务,但是您仍然可以通过调用setRollbackOnly方法回滚事务
有两种方法可以回滚容器管理的事务。首先,如果抛出系统异常,容器将自动回滚事务。其次,通过调用EJBContext接口的setRollbackOnly方法,bean方法指示容器回滚事务。如果bean抛出应用程序异常,回滚不是自动的,但可以通过调用setRollbackOnly来启动
因此,如果我的类具有@stateless,则无需添加@TransactionManagement,因为它是默认设置的。是吗?是的。一旦您使用(@Statless或@Stateful)将类定义为EJB,其任何方法中所需的任何事务都将由容器管理,除非您更改它。