Du får inte använda Session
och Transaction
som en klassmedlem i din dao så. Session/EntityManager
antas omfattas av arbetsenhet, de är inte gängsäkra.
I ditt nuvarande tillstånd, eftersom Spring DI skapar bönor som singleton, om två trådar använder dao samtidigt kommer den andra att skriva över båda Session
och Transaction
medlemmar och det är därför jag antar att du får IllegalStateExcepion.
Du måste göra dem trådomfattade genom att antingen använda dem som variabler i metoder eller, om du inte behöver hibernates specifika metod, kan du välja en fullständig JPA-konfiguration under våren och använda @PersistenceContext/@PersistenceUnit
att låta ramverket ta itu med den frågan.