延迟加载和多个事务

时间:2012-06-22 09:21:59

标签: java spring hibernate

我对一个hibernate会话中的惰性迭代器和多个事务有点困惑。有以下代码块:

@Transactional
public void runtProcessing() {
HibernateTemplate hibernateTemplate = ...
Session hibernateSession = hibernateTemplate.getSessionFactory().getCurrentSession();
Iterator<DomainObject> domainObjects = hibernateTemplate.iterate(...);
            try {
                while (domainObjects.hasNext()) {
                    hibernateSession.beginTransaction();
                    DomainObject domainObject = domainObjects.next();

                    processDomainObject(domainObject);
                    hibernateSession.getTransaction().commit();
                }
}

由于存在多个事务,我想知道迭代器在哪个事务中工作?

1 个答案:

答案 0 :(得分:0)

从这里http://ayende.com/blog/3775/nh-prof-alerts-use-of-implicit-transactions-is-discouraged

  

当我们没有定义自己的交易时,我们会回归到隐含的交易中   事务模式,其中每个语句都在其中运行   自己的事务,导致更高的性能成本(数据库时间   建立和拆除交易)并降低一致性。

因此迭代器作为自己的事务的一部分运行。希望这是有道理的。