getHibernateTemplate()。flush()和getSession()之间有什么区别.flush()

时间:2014-02-19 11:26:39

标签: java spring hibernate

我正在使用Hibernate 3.2.6。我正面临异常

  

在刷新之前保存瞬态实例

在我的代码中,有时我们使用getSession().flush(),有时我们在一个事务中使用getHibernateTemplate().flush()

你可以告诉我这两者之间的区别是什么?

1 个答案:

答案 0 :(得分:9)

不推荐使用

HibernateTemplate Spring代码,从Spring转移到注释之前的几天作为事务管理的首选方法。它不是Hibernate本身的一部分。模板代码抽象出了创建,提交和回滚事务的机制,允许开发人员专注于他们的业务逻辑。 Spring社区现在认为HibernateTemplate是多余的,并且已经完全删除了Spring对Hibernate 4的支持。

来自官方文件:

  

注意:从Hibernate 3.0.1开始,事务性Hibernate访问代码也可以用简单的Hibernate风格编码。因此,对于新启动的项目,请考虑采用基于SessionFactory.getCurrentSession()的标准Hibernate3样式的编码数据访问对象。

在过渡期间,您的代码可能是遗留代码和开发人员之间混合方法的混合。