Quand @TransactionAttribute (TransactionAttributeType.REQUIRES NEW) commit?
une méthode EJB appelée Aby
appelle une autre méthode EJB appelée Bob
Bob
est marqué avec @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
quand la transaction bob
se produit-elle?:
a) quand bob
fin de l'invocation
B) quand aby
fin de l'invocation
c) autres. quand?
2 réponses
je pense que A est juste. Lorsque la méthode Bob est appelée, elle crée une nouvelle transaction pour elle et la méthode Aby est suspendue jusqu'à ce que la transaction Bob est engagée.
aussi noter qu'il doit être Méthode d'un autre haricot pour le rendre transactionnel, les méthodes appelées du même haricot n'agissent pas comme des méthodes d'affaires.
Voir cette grande article pour plus d'explications.
en fait, je pense que l'alternative a est correcte. Voir:
EJB 3.0 - opération imbriquée != Nécessite De Nouvelles?
j'ai aussi fait quelques recherches et j'ai regardé dans les logs db (Hyper Sonic) pour voir réellement quand il est engagé dans la db et quand il est engagé quand la méthode REQUIRES_NEW est terminée. Mais comme c'est au conteneur de gérer les transactions peut-être il pourrait changer en fonction du conteneur. J'ai utilisé JBoss pendant le débogage. Et hibernent (cela vaut la peine de mentionner puisque je l'ai testé en vérifiant les journaux db). Je suppose qu'une écriture de base de données est impliqué puisque vous posez des questions sur les transactions.
mes pensées diffèrent de la réponse précédente de sorte qu'il serait amusant d'être persuadé.