4

我在我的应用程序中使用 Spring Hibernate 集成,并且 DAO 类正在扩展HibernateDaoSupport。假设我使用代码getHibernateTemplate().save(object) 使用休眠模板保存了一些对象,我不需要显式提交事务。我想知道何时提交数据。

考虑下面的代码片段

public void saveObject(){
   .......
   getHibernateTemplate().save(object1);
   ....
   ....
   getHibernateTemplate().save(object2);
 }

在上面的代码中,究竟在什么时候object1将插入到 DB..aftergetHibernateTemplate().save(object1);或方法的末尾?

4

3 回答 3

0

这取决于事务管理器配置和/或刷新模式设置。 http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/FlushMode.html

于 2012-08-24T22:09:24.473 回答
0

你应该使用这个:

  @Override
    public void addAccount(Account account) {

        hibernateTemplate.getSessionFactory().getCurrentSession().beginTransaction();
        hibernateTemplate.saveOrUpdate(account);
        hibernateTemplate.getSessionFactory().getCurrentSession().getTransaction().commit();
    }
于 2014-01-16T15:15:04.797 回答
0

没有一个。

在默认配置中,insert语句在它们可以执行的最后时刻执行,我的意思是休眠将它们保持到事务结束,或者它应该的任何其他点(如果有flush命令,其他一些选择命令......)。

但是提交根本不依赖于此,提交只是在您(或 Spring!)提交事务时发生。所以这取决于你如何管理事务,如果你使用的是 Spring 的声明式事务管理,那么哪个方法具有事务属性,以及它获得什么属性是很重要的。

于 2014-01-16T15:27:21.727 回答