Oracle
 sql >> Database >  >> RDS >> Oracle

session/entitymanager è chiuso

Non devi usare la Session e Transaction come un membro della classe del tuo dao in quel modo. Session/EntityManager si suppone che l'ambito sia per unità di lavoro, non sono thread-safe.

Nel tuo stato attuale, poiché Spring DI crea bean come singleton, se due thread usano il dao contemporaneamente il secondo sovrascriverà entrambi Session e Transaction membri, motivo per cui suppongo che tu ottenga l'IllegalStateExcepion.

Devi renderli nell'ambito del thread usandoli come variabili nei metodi oppure, se non hai bisogno del metodo specifico di ibernazione, potresti optare per una configurazione JPA completa in primavera e usare @PersistenceContext/@PersistenceUnit lasciare che il framework si occupi di questo problema.