JPA合并与持续

到目前为止,我的首选是始终使用EntityManager的merge()处理插入和更新。 但是我也注意到merge在更新/插入之前执行了额外的select查询,以确保logging在数据库中不存在。

现在我正在处理一个需要大量(批量)插入数据库的项目。 从性能的angular度来看,在绝对知道我总是创build一个要被保持的对象的新实例的场景中,使用persist而不是merge会有意义吗?

merge时,使用merge并不是一个好主意 – merge完成了很多工作。 这个话题已经在StackOverflow上讨论过了, 本文详细解释了这些差异,用一些不错的stream程图来说清楚。

我肯定会坚持persist()如果,如你所说:

(…)我绝对知道,我总是创build一个新的对象实例将被持久(…)

这就是这个方法的全部内容 – 它将在实体已经存在的情况下保护你(并且将回滚你的事务)。