Bạn không được sử dụng Session
và Transaction
như một thành viên trong lớp của bạn dao như vậy. Session/EntityManager
được cho là có phạm vi theo đơn vị công việc, chúng không an toàn theo chủ đề.
Ở trạng thái hiện tại của bạn, vì Spring DI tạo bean dưới dạng singleton, nếu hai luồng sử dụng dao cùng lúc thì luồng thứ hai sẽ ghi đè cả hai Session
và Transaction
đó là lý do tại sao tôi cho rằng bạn nhận được IllegalStateExcepion.
Bạn phải tạo phạm vi chuỗi cho chúng bằng cách sử dụng chúng làm biến trong các phương thức hoặc, nếu bạn không cần phương thức cụ thể của hibernate, bạn có thể tạo cấu hình JPA đầy đủ trong Spring và sử dụng @PersistenceContext/@PersistenceUnit
để cho phép khuôn khổ giải quyết vấn đề đó.