【问题标题】:Default value for @TransactionAttribute@TransactionAttribute 的默认值
【发布时间】:2015-02-18 19:10:21
【问题描述】:
我在我的项目中使用 EcllipseLink 2.5。
@TransactionAttribute 的默认值是必需的。
如果我们将 SessionBean 定义为 TransactionManagementType CONTAINER,是否还需要为 SessionBean 中的每个方法添加 @TransactionAttribute 注解来支持事务?
无论如何要为所有 SessionBeans 或整个类添加默认配置?
我不想在类中的每个方法中都添加@TransactionAttribute。
任何帮助将不胜感激。
谢谢
【问题讨论】:
标签:
java
transactions
eclipselink
jpa-2.0
ejb-3.0
【解决方案1】:
TransactionAttribute 的默认值是必需的。如果没有使用 TransactionAttribute 注释并且所讨论的 EJB 使用容器管理的事务,则 REQUIRED 也是默认值。
使用 CONTAINER TransactionManagementType 标记 EJB 意味着每个方法都是事务性的,并且默认情况下使用 REQUIRED TransactionAttributeType。您甚至可以跳过 TransactionManagement 注释,因为默认情况下 EJB 启用了 CONTAINER TransactionManagementType。您可以使用 TransactionAttribute 注释来覆盖默认值。
您可以在类或方法级别或两者上使用 TransactionAttribute 注解,在这种情况下,方法注解将覆盖特定方法的类注解。