是否存在与Spring的@Transactional等效的EJB或JPA注释?
答案 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。