Bonjour,
J'ai de gros problèmes avec la gestion de ma session et je me retrouve souvent avec des exceptions de type LazyInitializationException accompagné d'un "no session or session was closed".
En fait c'est surtout les transactions qui me posent problème. A quel moment je dois faire un session.beginTransaction() ?
Certaines opérations n'ont pas besoin d'avoir de transactions ouverte et pour d'autres ça va déclencher une exception donc on est plus ou moins obligé de faire un session.beginTransaction() dès le début et de la laisser ouverte puisqu'un commit de la transaction ferme la session. Si derrière on charge ou on update d'autres données on se tape une exception avec "no session or session was closed".
On ne peut pas non plus enchainer plusieurs petites transactions puisqu'au commit de la première transaction on ferme la session
Etaler une transaction (au sens API du terme, avec la classe Transaction) sur plusieurs minutes (le "user think time") ça rime à quelque chose ?
J'ai lu pas mal de fois la doc ainsi que les petits guide du wiki d'hibernate mais j'ai l'impression de confondre le rôle de la session et des transactions.
Le plus perturbant c'est qu'une transaction hibernate n'a rien à voir avec une transaction au sens SGBD qui se rapprocherait plus de la session hibernate. C'est à devenir fou
De quelle façon gérez-vous tout cela dans vos clients lourds ?
Je vous remercie d'avance pour vos conseils![]()
Partager