2008-12-11 3 views
32

Ich habe eine Weile über Nhibernate gelesen und habe versucht, es für eine Website zu verwenden, die ich implementiere. Ich habe the article by Billy McCafferty zu den besten Praktiken von NHibernate gelesen, aber ich habe keine Hinweise darauf gefunden, wo sich Transaktionen am besten abwickeln lassen.NHibernate Transactions Best Practices

Ich dachte daran, diesen Code in das Data Access Object (DAO) zu schreiben, aber dann bin ich nicht sicher, wie mit Fällen umzugehen ist, in denen mehr als ein DAO verwendet wird. Was sind die besten Orte, um Transaktionscode in Ihre NHibernate-Anwendung zu stellen?

Antwort

10

Es hängt wirklich von Ihrer Umgebung ab. Zum Beispiel verwenden wir das Muster Open-Session-In-View (Java-Link, aber das Muster ist in .Net identisch) auf einer ASP.Net-Site und verwenden ein HttpModule zum Steuern von Sitzungen und Transaktionen. Das HttpModule öffnet eine Sitzung und startet eine Transaktion im BeginRequest-Ereignis. Anschließend wird die Transaktion bestätigt und die Sitzung im EndRequest-Ereignis beendet.

Verschiedene Umgebungen und Kommunikationsmuster führen zu unterschiedlichen Strategien für die Sitzungs-/Transaktionsverwaltung.

Es gibt eine Menge Diskussion über die verschiedenen Strategien in der NHibernate Users Group sowie im Internet im Allgemeinen.