3
|
tQuarella · 技术社区 · 14 年前 |
![]() |
1
1
当用户访问某个页面时,您希望将各种内容记录到数据库中—页面命中等。这可以在同一会话中愉快地发生,但您希望页面跟踪被刷新到数据库中,即使随后发生错误也是如此。 为了提高性能,您将希望尽可能短的时间内打开事务。在您的请求期间,您可能正在执行许多面向非数据库的操作,在此期间没有理由保持事务处于打开状态。
|
![]() |
2
0
我个人不喜欢这样做,原因很简单,就是错误处理。如果你的事务。提交你的主要行动/请求/诸如此类的失败,你对发生的事情没有背景。然后,您将把用户发送到一些蹩脚的错误页或类似的页面。如果您正在执行web服务,其中可能返回一个指示内部错误或类似错误的结果代码,则这一点尤其正确。 我发现每个调用通常有一个业务事务,因此,我让我的应用程序服务管理事务,只让BeingRequest处理打开会话和EndRequest来刷新会话并进行处理。 我在EndRequest上刷新的原因是为了处理可能发生在事务边界之外的任何DB活动,但是,如果您有一个跨所有站点/服务处理这些活动的组件,情况就更糟了。 |
![]() |
Nico Pizzo · 子查询上的nhibernate联接 7 年前 |
![]() |
YMC · 无法在Nhb 4中构建只有特定字段可供选择的2个表联接 7 年前 |
![]() |
Stu · 具有特定类型的字符串外键的NHibernate映射 7 年前 |
![]() |
Zout · 为Hibernate的HiLo算法管理的列生成ID 7 年前 |