EJB3 / JPA @Transactional

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

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

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

 @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() {...} } 

容器管理的事务在Java EE 5教程的第IV部分中描述。

请参阅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将它们全部注入。 我会继续使用@TransactionAttribute和EJB。