我使用休眠来保存,更新和删除数据库中的数据,但是我遇到了一些问题。休眠模板的问题
比如我有一个数据库
getHibernateTemplate().saveOrUpdate(client);
getHibernateTemplate().flush();
保存或更新我的数据当我启动我的服务器(Tomcat)的第一和保存我的数据的请求,一切都还好,在我的数据库我看到我的数据。
如果我删除了数据并运行了我的客户端的新保存,它将执行更新而不是插入,即使我已删除数据。
我使用休眠来保存,更新和删除数据库中的数据,但是我遇到了一些问题。休眠模板的问题
比如我有一个数据库
getHibernateTemplate().saveOrUpdate(client);
getHibernateTemplate().flush();
保存或更新我的数据当我启动我的服务器(Tomcat)的第一和保存我的数据的请求,一切都还好,在我的数据库我看到我的数据。
如果我删除了数据并运行了我的客户端的新保存,它将执行更新而不是插入,即使我已删除数据。
这是因为对象已经在内存中,而且休眠已经持续了它们。当应用程序启动时,如果未定义,hiberante会根据需要将内存加载到内存中(延迟获取)。当对象以编程方式变化时,hibernate将该对象持久存在数据库中。你不需要使用save()
,只需要commit()
。 save
仅适用于新创建的对象,update()
用于将分离的对象重新附加到会话。
不能在不使用hibernate的情况下更改数据库数据,并期望hibernate意识到数据库已更改。您必须使用hibernate session
方法更改数据。
如果您更改不使用休眠的数据,并且希望休眠来实现对象,请使用session.refresh()
方法将对象从数据库重新加载到内存中。这样,数据库中的更改将反映在内存中加载的对象中。
我该怎么做? – Mercer 2010-08-26 10:26:11
阅读此[kickstart指南](http://techtracer.com/2008/12/30/the-great-hibernate-tutorial-a-great-jump-start-for-beginners/) – pakore 2010-08-26 10:53:56