Salut à tous

considérons par exemple ce bloc de code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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