Bonsoir DevServlet,
merci beaucoup pour ton conseil. Entre mon message initial et maintenant, il s'est passé beaucoup de temps au cours duquel j'ai apporté beaucoup de modifs au code, dont celui que tu indiques à juste titre.
Mon problème est en partie résolue, mais il reste un détail que je vais expliciter.
En premier lieu, comment ai-je résolu le problème ?
Il se trouve que j'utilisais dans ma classe DAO une annotation :
1 2
| @PersistenceContext(name="MyPU")
EntityManager em; |
Je pensais, comme je l'avais souvent lu, que celle-ci me permettrait de récupérer la persistence unit (PU) et de créer mon EntityManager dans la foulée. Or, j'ai appris que cette annotation ne fonctionnait que lorsque l'on travaillait dans un véritable contexte de serveur d'application et non en standalone. Du coup, j'ai contourné le problème de façon "classique" je dirais :
EntityManager em = Persistence.createEntityManagerFactory("MyPU").createEntityManager();
A présent mon code lit et écrit dans la base, et c'est bien.
Mais il reste un détail à régler que ma jeunesse dans le métier explique :
Chaque fois que je vais faire appel à cette classe DAO, je vais re-créer un EntityManager. Or cette classe est déclenchée par une classe "métier" qui peut faire appel à elle plusieurs fois au cours d'un même traitement (du moins c'est ce qui est prévu, là je débute ^^).
Pour que ce soit vraiment parfait, cela implique, d'après la littérature, que je fasse de "l'injection de dépendance" mais je ne maîtrise pas encore à ce point les design patterns.
Ce que j'en ai lu ne me parait pas excessivement compliqué, mais j'ai un doute quant à savoir à quel niveau cela doit se passer.
Dois-je "injecter" cette dépendance seulement dans la classe "métier" ou encore avant, c'est à dire au moment où celle-ci est appelée depuis la classe de "run" ?
Là c'est flou...
Partager