Tôi đang sử dụng Hibernate với Spring trên Tomcat. Tôi đã đọc và đọc lại oft chỉ đến JBoss wiki page về chủ đề, và điều đó rất hữu ích. Nhưng nó để lại cho tôi một số câu hỏi.Phiên mở cửa Hibernate trong Chế độ xem: Giao dịch cho mỗi yêu cầu?
Ý tưởng bắt đầu giao dịch cho mọi yêu cầu làm phiền tôi. Tôi đoán tôi có thể giới hạn các bộ lọc để điều khiển nhất định - có thể đặt tất cả các bộ điều khiển của tôi cần một giao dịch dưới một pseudo "tx" đường dẫn hoặc một cái gì đó. Nhưng nó không phải là một ý tưởng tồi để sử dụng các giao dịch nếu bạn không biết nếu bạn sẽ cần một giao dịch? Và nếu tôi chỉ đang đọc trong một số yêu cầu - đọc rất có thể đến từ một bộ nhớ cache - không phải là tôi tốt hơn mà không có một giao dịch?
Tôi đã đọc các bài đăng đề cập đến cách họ xử lý giao dịch ở lớp dịch vụ và tôi muốn làm điều này với Spring. Nhưng sau đó mã bộ lọc trông như thế nào? Tôi vẫn muốn các phiên có sẵn trong quan điểm của tôi cho một số tải lười biếng.
Nếu tất cả những gì tôi phải làm là gọi
sessionFactory.getCurrentSession()
trong bộ lọc của tôi, làm cách nào để "giải phóng" trở lại nhà máy phiên để sử dụng lại? (Tôi dự kiến sẽ thấysession.close()
hoặc một cái gì đó, ngay cả khi sử dụng giao dịch.) Ai đang nói cho nhà máy phiên rằng phiên đó có thể được sử dụng lại?Có lẽ đó là cuộc gọi
beginTransaction()
liên kết kết nối cơ sở dữ liệu đã cho với một phiên nhất định trong thời gian yêu cầu? Nếu không, phiên sẽ kéo các kết nối db từ nhóm nếu cần, phải không?
Cảm ơn sự kiên nhẫn của bạn với tất cả các câu hỏi của tôi.
(Và nếu câu trả lời của bạn sẽ là một liên kết đến tài liệu Spring, bạn sẽ khiến tôi khóc. Bạn không muốn điều đó, phải không? Tôi sẽ trả tiền thật nếu mọi người ngừng trả lời Spring các câu hỏi liên quan theo cách đó.)
Tôi đã đi từ đây đến đó và sau đó đến đó, bỏ qua web về chủ đề này trong một tuần ... và đó là lần đầu tiên tôi đọc rằng Spring có bộ lọc OpenSessionInView. Cảm ơn bạn. – Marvo
Con người, điều đó hoạt động rất đẹp. Cảm ơn! – Marvo
Tôi luôn nghĩ rằng nó sẽ hoạt động như một giao dịch. Nhưng thực sự giao dịch được giới hạn bởi @Transactional của mùa xuân. Cảm ơn lời giải thích. –