7 votes

EJB3 / JPA @Transactional

Existe-t-il une annotation EJB ou JPA équivalente à l'annotation @Transactional de Spring ?

8voto

joelittlejohn Points 3799

L'attribut EJB3 équivalent est javax.ejb.TransactionAttribute .

Tout comme le printemps @Transactional vous pouvez contrôler la "propagation" de la transaction en passant une annotation TransactionAttributeType à la TransactionAttribute annotation, comme :

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

Les transactions gérées par conteneur sont décrites dans Partie IV du tutoriel Java EE 5 .

3voto

99Sono Points 141

Voir la javadoc sur .

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

A savoir le paragraphe : Voir la spécification EJB pour les restrictions sur l'utilisation de @Transactional avec les EJB.

Je n'ai pas trouvé dans EJB 3.2 de référence au conditionnement de ce support.

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

Cependant, dans weblogic 12.1.2 EJB 3.1 - l'attribut @Transactional fonctionne sur les ejbs @Stateless @Local que vous injectez dans une classe de base en utilisant l'annotation CDI @Inject.

Dans tous les cas, je n'utiliserais pas l'annotation @Transactional pour les EJB, même si tous vos EJB sont locaux et que vous les injectez tous avec @Inject au lieu de @EJB. Je continuerais à utiliser l'attribut @TransactionAttribute avec les EJB.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X