JPA 合并与持久化

2022-08-31 14:22:44

到目前为止,我的偏好是始终使用EntityManager的插入和更新。但我也注意到,merge 在更新/插入之前会执行额外的选择查询,以确保数据库中不存在记录。merge()

现在,我正在处理一个需要向数据库进行大量(批量)插入的项目。从性能的角度来看,在我绝对知道我总是在创建要持久化的对象的新实例的情况下,使用持久化而不是合并是否有意义?


答案 1

当一个足够时使用不是一个好主意 - 做更多的工作。这个话题之前已经在StackOverflow上讨论过了本文详细解释了其中的差异,并提供了一些很好的流程图来说明问题。mergepersistmerge


答案 2

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

(...)我绝对知道我总是在创建一个要持久化的对象的新实例(...)

这就是此方法的全部意义所在 - 它将在实体已经存在的情况下保护您(并将回滚您的事务)。