Làm thế nào đúng "vòng đời" của một phiên Hibernate dưới mùa xuân nên được thực hiện?Spring + Hibernate session lifecycle
SessionFactory
được Spring tạo tự động và đang lấy kết nối DB từ hồ bơi kết nối Glassfish. Hiện tại tôi đang có phiên Hibernate qua SessionFactory.getCurrentSession()
. Sau đó, tôi bắt đầu giao dịch, thực hiện công việc và sau đó commit()
hoặc rollback()
ở cuối. Tôi có cần thực hiện bất kỳ hành động nào khác như disconnect()
, close()
, flush()
hoặc bất kỳ hành động nào khác vào bất kỳ lúc nào để kết nối sẽ được trả lại đúng cách vào hồ bơi hay mọi thứ đã được Spring tự động thực hiện chưa?
Với nhiều phương pháp này, có một chút khó hiểu đối với tôi vào lúc này để hiểu khi nào nên làm gì, có thể ai đó có thể chỉ ra đúng hướng?
SessionFactory có trên hệ thống của tôi được định cấu hình là bean đơn, vì vậy nó sẽ không bao giờ đóng ... – Laimoncijus
@Laimoncijus: SessionFactory theo mặc định singleton. Trả lời sửa đổi cho phù hợp. Kiểm tra nó –
Vì vậy, bạn không cần phải cấu hình singleton sessionfactory. Ngoài ra, hãy kiểm tra câu trả lời này: http://stackoverflow.com/questions/8523332/close-opened-hibernation-sessions-if-exist/8530891#8530891 –