Quelles bonnes pratiques pour utiliser les transactions "en ligne"?
Salut à tous
considérons par exemple ce bloc de code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
@statefull
@Namer
class MyClass extends IMyclass{
@TransactionAttribute(requireNew)
public void myMethod1(){
...
}
@TransactionAttribute(requireNew)
public void myMethod2(){
...
}
public void myMethod(){
myMethod1();
myMethod2();
}
} |
En exécutant la méthode "myMethod()" les méthodes "myMethod1()" et "myMethod2()" ne vont pas s’exécuter dans le contexte des transactions définies (dans notre cas "requireNew"). Pour cela, il faudrait extraire la méthode "myMethod()" dans une autre classe.
Code:
1 2 3 4 5 6 7 8 9 10
|
class ArtificialClass {
@Inject
Myclass myClass;
public void myMethod(){
myClass.myMethod1();
myClass.myMethod2();
}
} |
Logiquement la méthode "myMethod()" doit se trouver dans la classe "MyClass". Mais à cause d'un problème purement technique ( exécution des transactions), je me trouve obligé de la placer dans une classe "artifcielle" qui n'a aucune signification "métier" et qui est utiliser juste pour contourner un problème technique. Connaissez vous une façon plus élégante de résoudre ce problème? merci