Existe-t-il une annotation EJB ou JPA équivalente à l'annotation @Transactional de Spring ?
Réponses
Trop de publicités?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 .
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.