清理一些交易逻辑,并想知道其他人如何处理它。
Ayende的建议似乎是处理服务边界的交易。这是一个ASP.NET Web应用程序,因此它没有明确的服务边界,至少现在不是。
人们做什么?
答案 0 :(得分:1)
您可以将IoC容器用于服务层,容器可以管理事务和Nibenrate会话。
您的WebApp Controller =>呼叫(A)服务层=>调用(B)一个或几个DAO方法/操作。
像Spring.NET这样的IoC容器将管理te TX范围,例如在(A)处,并将在(B)中为您的DAO提供一个Session。提交(或回滚)将在服务层调用结束时处理。
答案 1 :(得分:0)
大多数人使用第一个要点中所述的每个请求的会话策略。但是,我不认为该事务需要在EndRequest上提交。在许多网页中,根据用户操作(例如单击提交)提交事务会更容易,并让EndRequest只处理部署ISession。
据我所知,没有必要创建HttpModule,因为可以在global.asax中创建相同的功能:http://forum.hibernate.org/viewtopic.php?t=993041。