Hibernate 休眠保存策略?

Hibernate 休眠保存策略?,hibernate,Hibernate,我一直在使用Hibernate/Spring。我有点怀疑。如果我们从一个表中获取1000条记录,并使用它保存的saveOrUpdate()方法保存到另一个表中 如果我通过传递相同的1000条记录而不修改任何记录来调用相同的方法,那么hibernate在这里的行为如何?它是触发1000个更新查询,还是巧妙地识别记录是否真的被修改了 谢谢 我不认为它会执行更新,不管状态如何。Hibernate中的实体具有某种类型的属性,指示从数据库检索对象后该对象是否已被更改。如果使用同一会话对象加载并持久化这10

我一直在使用Hibernate/Spring。我有点怀疑。如果我们从一个表中获取1000条记录,并使用它保存的
saveOrUpdate()
方法保存到另一个表中

如果我通过传递相同的1000条记录而不修改任何记录来调用相同的方法,那么hibernate在这里的行为如何?它是触发1000个更新查询,还是巧妙地识别记录是否真的被修改了


谢谢

我不认为它会执行
更新
,不管状态如何。Hibernate中的实体具有某种类型的属性,指示从数据库检索对象后该对象是否已被更改。

如果使用同一会话对象加载并持久化这1000条记录,则不会触发任何更新脚本。如果使用不同的会话对象加载并保存了1000条记录,那么hibernate将触发1000个更新查询。

我认为如果您在这里使用不同的会话,它不会进行更新

为了执行saveOrUpdate,Hibernate将首先将实体加载到新会话中。然后它将检查您正在保存的实体是否脏。如果它不是脏的,则不会执行更新

这里的关键是,除非对象在会话中,否则Hibernate不会对其进行操作。无论您使用的是相同的会话还是新会话