gpt4 book ai didi

java - Hibernate JPA find() 和 merge() 之间删除的区别

转载 作者:行者123 更新时间:2023-12-02 13:29:02 27 4
gpt4 key购买 nike

我想问一下使用find()和merge()方法删除有什么区别。编译后我得到相同的结果。 User 类和 UserDetails 是 OneToOne 关系(父级和子级)中的类。

使用 find()

@Transactional
@Override
public void delete(User user) {
User temp = entityManager.find(User.class,user.getId());
entityManager.remove(temp.getUserDetails());
entityManager.remove(temp);
}

使用合并()

@Transactional
@Override
public void delete(User user) {
User temp = entityManager.merge(user);
entityManager.remove(temp.getUserDetails());
entityManager.remove(temp);
}

最佳答案

merge() 方法用于对作为参数传递的实体执行更新,更新完成后它返回更新/合并的结果,这就是为什么您能够将它用作“查找” ()”方法。

find() 方法仅采用 ID 作为参数,因此无法使用该 ID 执行更新。

我想说 merge() 方法效率较低,因为它会先执行更新然后返回结果,也许还有一些逻辑在执行更新之前检查实体是否脏,这可能会导致附加费用。另一方面,在大多数情况下,这两种方法不应该有太大差异。

关于java - Hibernate JPA find() 和 merge() 之间删除的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43265790/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com