如何管理会话/事务生命周期以处理许多实体

问题描述:

在我的团队正在开发的项目中,有一个Windows服务遍历某个表中的所有实体,并根据一些规则更新其某些字段定义。我们使用NHibernate作为我们的ORM工具。目前,我们为整个进程打开一个会话和一个事务,这意味着事务在所有实体处理完成后被提交。我认为这种方法不好,我想听听更多的意见: 我们是否应该保持目前的会话管理方式,或者应该采用不同的方法?如何管理会话/事务生命周期以处理许多实体

我想过的一个选择是为每个实体打开一个事务,另一个建议是为每个实体打开一个新的会话。 你认为哪种方法最适合?

没有一种方法可以做到这一点;这一切都取决于具体情况。

在我正在开发的应用程序中,我有三种方法的示例,并且有选择每个方法的原因。例如:

  • 整个过程必须有事务原子:使用单个事务
  • 的过程有许多共同点的数据,但在“主”表中每条记录可以被认为是一个工作单元:使用单个会话,多个事务
  • 处理主表中的每个记录应该独立于其他(包括错误处理):使用每个记录的会话