2008-12-11 48 views
32

Tôi đã đọc khoảng Nhibernate một lúc và đã cố gắng sử dụng nó cho một trang web tôi đang triển khai. Tôi đọc the article by Billy McCafferty về các phương pháp hay nhất của NHibernate nhưng tôi không thấy bất kỳ dấu hiệu nào về vị trí tốt nhất để xử lý giao dịch.Giao dịch NHibernate Thực tiễn tốt nhất

Tôi đã nghĩ đến việc đặt mã đó vào đối tượng truy nhập dữ liệu (DAO) nhưng sau đó tôi không chắc chắn cách xử lý các trường hợp trong đó nhiều hơn một DAO được sử dụng. Những nơi tốt nhất để đặt mã giao dịch trong ứng dụng NHibernate của bạn là gì?

Trả lời

10

Nó thực sự phụ thuộc vào môi trường của bạn. Ví dụ, chúng tôi sử dụng Open-Session-In-View (liên kết Java nhưng mẫu có cùng kiểu .Net) trên trang ASP.Net và sử dụng HttpModule để kiểm soát phiên và giao dịch. HttpModule mở một phiên và bắt đầu một giao dịch trong sự kiện BeginRequest và sau đó cam kết giao dịch và đóng phiên trong sự kiện EndRequest.

Các môi trường và mẫu giao tiếp khác nhau sẽ dẫn đến các chiến lược quản lý phiên/giao dịch khác nhau.

Có rất nhiều cuộc thảo luận về các chiến lược khác nhau trong NHibernate Users Group cũng như trên web nói chung.

0

đơn giản nhất cách là sử dụng giao dịch thông minh mô tả trong

http://rajputyh.blogspot.com/2011/02/nested-transaction-handling-with.html

Nó sử dụng phổ biến NHibernateSessionManager và một lớp đơn giản được viết để đảm bảo rằng "bạn mở giao dịch khi bạn muốn" mà không lo lắng về logic cha và logic phụ đang xử lý giao dịch.

Các vấn đề liên quan