Vous ne devez pas utiliser la Session
et Transaction
en tant que membre de la classe de votre dao comme ça. Session/EntityManager
sont supposés être définis par unité de travail, ils ne sont pas thread-safe.
Dans votre état actuel, comme Spring DI crée des beans en tant que singleton, si deux threads utilisent le dao en même temps, le second écrasera les deux Session
et Transaction
membres, c'est pourquoi je suppose que vous obtenez l'exception IllegalStateExcepion.
Vous devez les rendre dans la portée du thread en les utilisant comme variables dans les méthodes ou, si vous n'avez pas besoin de la méthode spécifique d'hibernate, vous pouvez opter pour une configuration JPA complète dans Spring et utiliser @PersistenceContext/@PersistenceUnit
pour laisser le framework s'occuper de ce problème.