是否使用每个NHibernate操作的事务才能使用缓存?

时间:2011-02-06 05:38:45

标签: nhibernate transactions

使用每个NHibernate操作的事务是为了使用缓存吗?为什么?

2 个答案:

答案 0 :(得分:3)

如果您不使用显式交易。大多数数据库将使用隐式事务。这意味着您所做的每个查询都将包装在查询完成时提交的事务中。请参阅此文章:Use Of Implicit Transactions Is Discouraged

因此,将应用程序操作包装在事务中是个好主意,即使他们所做的只是获取数据。特别是因为您的问题是处理缓存,如果您想根据引用的文章使用二级缓存,则需要使用事务。

答案 1 :(得分:0)

在数据库系统中,事务旨在将几个较小的原子操作包装成一个较大的操作。

典型的例子是将钱从一个支票账户转移到另一个支票账户。两个原子操作是:

  1. 从一个帐户借记$ x.xx
  2. 将$ x.xx记入另一个帐户
  3. 这两个原子操作包含在一个事务中,这样,如果其中一个操作失败,您可以回滚整个事务,系统将不会处于银行或客户留下的状态。太多或太少的钱,或有钱下落不明。

    因此,如果您的操作是简单的原子操作,例如更改表中的单个字段,那么不,我认为您不需要事务处理。