我在我的应用程序中使用Spring Hibernate集成,DAO类正在扩展HibernateDaoSupport
。
假设我使用代码getHibernateTemplate().save(object)
保存了一些对象
使用hibernate模板我不需要显式提交事务。我想知道数据提交的时间点。
考虑以下代码段
public void saveObject(){
.......
getHibernateTemplate().save(object1);
....
....
getHibernateTemplate().save(object2);
}
在上面的代码中,确切地将object1
插入到DB {after getHibernateTemplate().save(object1);
或方法结尾处?
答案 0 :(得分:0)
这取决于事务管理器配置和/或刷新模式设置。 http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/FlushMode.html
答案 1 :(得分:0)
你应该用这个:
@Override
public void addAccount(Account account) {
hibernateTemplate.getSessionFactory().getCurrentSession().beginTransaction();
hibernateTemplate.saveOrUpdate(account);
hibernateTemplate.getSessionFactory().getCurrentSession().getTransaction().commit();
}
答案 2 :(得分:0)
都不是。
在默认配置中,insert
语句在最后时刻执行,我的意思是hibernate将它们保持到事务结束,或任何其他点(如果有flush
命令,其他一些选择命令....)。
但是提交完全不依赖于此,只有在您(或Spring!)提交事务时才会提交。所以它取决于你如何管理事务,如果你使用Spring的声明式事务管理,那么哪个方法具有事务属性以及它所具有的属性是很重要的。