HibernateDAOSupport获取方法

时间:2014-05-28 15:41:07

标签: spring hibernate

我正在开发一个使用Hibernate和Spring的现有项目。我看到以下代码 它使用HibernateDAOSupport类,

Employee emp = getHibernateTemplate().get(Emplyee.class, 1001)

在上面的行之后我们设置了一些属性,如emp.setAge(25);,最后我们不调用任何Save或SaveOrUpdate方法。但它将数据保存到DB。怎么可能?

如果它可以保存那么getHibernateTemplate()。get()和getHibernateTemplate()。save / SaveOrUpdate方法有什么区别?请帮助我理解。

1 个答案:

答案 0 :(得分:1)

这是Hibernate的预期行为,这是因为Employee实体已加载到PersistenceContext中,因此会进入“{00}”持久性'实体生命周期状态。

当您提交交易时,Hibernate将检查任何“持久性”' PersistenceContext中的实体,看看它们是否是“脏”#34;。脏意味着实体的任何值都发生了变化。你对emp.setAge(25)的调用意味着Hibernate理解实体中的数据已经改变(它是脏的),因此它应该在事务提交时使更改持久化。

值得阅读和理解Hibernate如何管理实体状态,因为它可能有点令人困惑。文档为here