我是Hibernate的新手,上周完成了Hibernate教程。我对Session类中的方法save,update,saveOrUpdate和merge有一些疑问。这些是:
它是否正确?如果我们在已经存在的对象上调用保存,则不确定会发生什么?
根据我的理解,它应该会因某些异常而失败,因为根据API更新是针对分离对象的。它是否正确?如果是的话,我们应该在同一会话中调用什么来更新对象(我的意思是如果对象未分离)。另一点是:如果我们调用新创建的对象的更新,将会发生什么?
我理解正确吗?
但是,如果当前没有与该会话相关联的持久实例,则这将从数据存储中加载持久对象,然后在已加载的持久对象中更新分离对象的值,然后对其进行更新。
我也明白了吗?
您在所有评估中都完全正确。你懂了。
对于您的第一个问题,如果我没记错的话,请save专门进行插入。因此,再次调用save将导致数据库中的另一行。
save
对于第二个问题,请update更新会话中的对象。因此,如果对象在会话中,它将进行更新。如果对象不在会话中,则应调用merge。我相信,调用update分离的实例将导致异常。
update