j'ai moi aussi mis en place la gestion des transactions avec les annotations et quelque chose m'intrigue.
j'ai une classe service, de mémoire :
puis une servlet dans laquelle je fait appel aux méthodes de ma classe service, donc qq chose comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Transactional ServiceImpl implements Service { public Set getFiles(){...}; public Set getNotes(){...}; public Set getUrls(){...}; public Set getTodos(){...}; }
j'ai remarqué qu'à chaque appel d'une méthode get une session est ouverte puis refermé ce qui fait que j'ai une succession d'ouvertures et de fermetures de sessions. Ne connaissant pas très bien la gestion des transactions je me demande si c'est quelque chose de gênant. ça me parait pas terrible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 doGet(HttpServletRequest request, HttpServletResponse response){ getFiles(); getNotes(); getUrls(); getTodos(); }
Après quelques recherches j'ai trouvé le Open Session in View pattern qui ouvre une session pour toute la durée de la requête (la requete http prise en charge par la servlet) et la ferme à la fin. Je n'arrive pas à le mettre en place car je ne dispose pas d'une sessionFactory mais d'un transactionManager.
Est-ce qu'il y a un moyen d'obtenir le même résultat par configuration du transactionManager?
Merci pour toute aide, je suis à la recherche des meilleurs pratiques pour gérer les transactions dans une appli web
Partager