EJB3 / JPA @Transactional

时间:2011-07-28 17:31:13

标签: java spring ejb

是否存在与Spring的@Transactional等效的EJB或JPA注释?

2 个答案:

答案 0 :(得分:8)

等效的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中描述了容器管理的事务。

答案 1 :(得分:2)

请参阅javadoc。

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

即段落: 有关将@Transactional与EJB一起使用的限制,请参阅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 ejbs。

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