2010-08-26 70 views
1

我使用休眠来保存,更新和删除数据库中的数据,但是我遇到了一些问题。休眠模板的问题

比如我有一个数据库

getHibernateTemplate().saveOrUpdate(client); 
getHibernateTemplate().flush(); 

保存或更新我的数据当我启动我的服务器(Tomcat)的第一和保存我的数据的请求,一切都还好,在我的数据库我看到我的数据。

如果我删除了数据并运行了我的客户端的新保存,它将执行更新而不是插入,即使我已删除数据。

回答

1

这是因为对象已经在内存中,而且休眠已经持续了它们。当应用程序启动时,如果未定义,hiberante会根据需要将内存加载到内存中(延迟获取)。当对象以编程方式变化时,hibernate将该对象持久存在数据库中。你不需要使用save(),只需要commit()save仅适用于新创建的对象,update()用于将分离的对象重新附加到会话。

不能在不使用hibernate的情况下更改数据库数据,并期望hibernate意识到数据库已更改。您必须使用hibernate session方法更改数据。

如果您更改不使用休眠的数据,并且希望休眠来实现对象,请使用session.refresh()方法将对象从数据库重新加载到内存中。这样,数据库中的更改将反映在内存中加载的对象中。

更多的信息在Chapter 10 of Hibernate documentation

+0

我该怎么做? – Mercer 2010-08-26 10:26:11

+0

阅读此[kickstart指南](http://techtracer.com/2008/12/30/the-great-hibernate-tutorial-a-great-jump-start-for-beginners/) – pakore 2010-08-26 10:53:56