NHibernate交易最佳实践

时间:2008-12-11 18:50:58

标签: nhibernate transactions

我已经阅读了Nhibernate一段时间了,并且一直在尝试将它用于我正在实施的网站。我阅读了关于NHibernate最佳实践的the article by Billy McCafferty,但我没有看到任何关于处理事务的最佳位置的指示。

我想过把这些代码放在数据访问对象(DAO)中,但后来我不知道如何处理使用多个DAO的情况。在NHibernate应用程序中放置事务代码的最佳位置是什么?

3 个答案:

答案 0 :(得分:11)

基于Ayende,您可能需要明确地为所有人添加交易,甚至是搜索。请点击这里: http://nhprof.com/Learn/Alerts/DoNotUseImplicitTransactions

答案 1 :(得分:10)

这实际上取决于您的环境。例如,我们在ASP.Net站点上使用Open-Session-In-View(Java链接,但模式在.Net中是相同的)模式,并使用HttpModule来控制会话和事务。 HttpModule打开会话并在BeginRequest事件中启动事务,然后提交事务并在EndRequest事件中关闭会话。

不同的环境和沟通模式将导致不同的会话/交易管理策略。

NHibernate Users Group以及网络上的各种策略进行了大量讨论。

答案 2 :(得分:0)

最简单的方法是使用

中描述的智能交易

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

它使用流行的NHibernateSessionManager并编写一个简单的类来确保“在需要时打开事务”而不必担心父逻辑和子逻辑处理事务的内容。