Tôi đang viết một ứng dụng dựa trên web với hibernate và jsp/servlet. Tôi đã đọc về các phương pháp sessionFactory.getCurrentSession
và sessionFactory.openSession
. Tôi biết sự khác biệt cơ bản giữa chúng (sử dụng getCurrentSession
bạn không phải đóng kết nối và khi bạn cam kết giao dịch, phiên của bạn sẽ tự động đóng). Theo sự hiểu biết của tôi, chúng tôi nên chọn cho getCurrentSession
và thực hiện thông qua phiên cho mỗi yêu cầu.
getCurrentSession hibernate trong web
Hãy xem xét các tình huống sau:
- Phương pháp A gọi
getCurrentSession
và có phiên hiện tại - Trong Phương pháp A, một giao dịch được bắt đầu sử dụng phiên từ bước 1
- Phương pháp Một cuộc gọi Phương thức B, cũng có
getCurrentSession
và bắt đầu một giao dịch - Phương thức B cam kết tran của nó saction
- kiểm soát trở về phương pháp A và nó cũng cam kết giao dịch
Bây giờ câu hỏi của tôi là
- phiên sẽ tìm thấy ở bước 1 và bước 3 sẽ là phiên giống nhau không?
- Nếu câu trả lời cho câu hỏi 1 là có, thì nó sẽ xử lý cam kết ở bước 4 như thế nào? Lý tưởng nhất là nên đóng phiên tại đó và phải ném một ngoại lệ ở bước 5.
- Nếu câu trả lời cho câu hỏi 1 là không, thì làm thế nào để bạn xử lý một kịch bản như vậy?
Cảm ơn Tony, tôi thích cách bạn đã đề cập đến nó. – Aashutosh
@Tony Ennis: cộng một và được sắp xếp hợp lý. –