2011-07-28 52 views
6

是否存在等價於Spring的@Transactional的EJB或JPA註釋?EJB3/JPA @Transactional

+0

可能的重複[是否有類似於JEE 6中的Springs @Transactional註解availabe?](http://stackoverflow.com/questions/6424289/is-there-something-analogous-to-springs-transactional-annotation -availabe合JEE) –

回答

8

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

就像Spring的@Transactional註解,你可以通過一個TransactionAttributeTypeTransactionAttribute註釋,就像控制事務「傳播」:

@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描述。

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的EJB。

在任何情況下,即使所有的EJB都是本地的,我也不會使用@Transactional批註來處理EJB,並且用@Inject而不是@EJB注入它們。 我會繼續在EJB中使用@TransactionAttribute。