Nie wolno używać Session
i Transaction
jako członek klasy twojego dao w ten sposób. Session/EntityManager
mają być objęte zakresem jednostki pracy, nie są bezpieczne wątkowo.
W twoim obecnym stanie, ponieważ Spring DI tworzy ziarna jako singleton, jeśli dwa wątki używają dao w tym samym czasie, drugi nadpisze obie Session
i Transaction
członków, dlatego przypuszczam, że otrzymasz IllegalStateExcepion.
Musisz ustawić je w zakresie wątku, używając ich jako zmiennych w metodach lub, jeśli nie potrzebujesz konkretnej metody hibernacji, możesz przejść do pełnej konfiguracji JPA w Spring i użyć @PersistenceContext/@PersistenceUnit
aby framework poradził sobie z tym problemem.