【问题标题】:EJB3 / JPA @TransactionalEJB3 / JPA @Transactional
【发布时间】:2011-10-15 08:13:52
【问题描述】:

是否有等效于 Spring 的 @Transactional 的 EJB 或 JPA 注释?

【问题讨论】:

标签: java spring ejb


【解决方案1】:

参见 javadoc。

http://docs.oracle.com/javaee/7/api/javax/transaction/Transactional.html

即段落: 有关在 EJB 中使用 @Transactional 的限制,请参阅 EJB 规范。

我在 EJB 3.2 中没有找到任何关于此支持条件的参考。

http://www.oracle.com/technetwork/java/javaee/tech/index-jsp-142185.html

但是,我在 weblogic 12.1.2 EJB 3.1 中 - @Transactional 属性适用于您使用 CDI @Inject 注释注入基类的 @Stateless @Local ejb。

在任何情况下,我都不会对 EJB 使用 @Transactional 注释,即使您的所有 EJB 都是本地的并且您使用 @Inject 而不是 @EJB 注入它们。 我会继续将 @TransactionAttribute 与 EJB 一起使用。

【讨论】:

    【解决方案2】:

    等效的 EJB3 属性是 javax.ejb.TransactionAttribute

    就像 Spring 的 @Transactional 注释一样,您可以通过将 TransactionAttributeType 传递给 TransactionAttribute 注释来控制事务“传播”,例如:

    @TransactionAttribute(NOT_SUPPORTED)
    @Stateful
    public class TransactionBean implements Transaction {
    ...
        @TransactionAttribute(REQUIRES_NEW)
        public void firstMethod() {...}
    
        @TransactionAttribute(REQUIRED)
        public void secondMethod() {...}
    
        public void thirdMethod() {...}
    
        public void fourthMethod() {...}
    }
    

    Part IV of the Java EE 5 Tutorial 中描述了容器管理的事务。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-09
      • 2018-06-27
      • 2020-02-03
      • 2014-12-24
      • 2013-11-12
      • 1970-01-01
      相关资源
      最近更新 更多