gpt4 book ai didi

java - 何时需要以及何时不需要手动将更新保存到 JPA 实体

转载 作者:行者123 更新时间:2023-11-30 08:04:27 27 4
gpt4 key购买 nike

我有一个 java.persistence.Entity 类,我使用 java.persistence.EntityManager.persist 对其进行实例化和持久化。为了安全起见,我确保它已合并到持久性上下文中并且我很好。

现在,我知道当我从头开始创建实体时,我需要通过 EntityManager 手动持久化它,但是如果我只是检索一个已经存在的记录作为一个实体呢?我的测试表明,只需对该实体调用 setter 就会导致更新进入数据库,但我正在寻找可以依赖的明确内容。因此,任何人都可以阐明或来源说明何时(可靠地)对附加实体进行更新以获得写入磁盘。此时,我别无选择,只能在进行更改后手动保留实体,但我更清楚何时何地不必这样做。

更新:(感谢 Yusuf)根据下面提到的接受的答案,我的问题得到了回答。 JPA EntityManager: Why use persist() over merge()? .

根据那个答案,persist 本身除了将实体添加到持久性上下文之外什么都不做。合并将一个新对象添加到上下文中。这意味着持久性只是作为持久性上下文的一部分的功能,并且由于通过实体管理器获取实体,实体附加到上下文,因此根本不需要呼吁坚持

最佳答案

如您所说,如果您从头开始创建对象,则需要调用 persist。

如果您使用 EntityManager 访问 JPA 实体,你永远不需要调用 persist 方法,因为当事务结束时(大部分时间是在返回事务方法时),它会自动持久化。如果您不想在事务方法返回时自动持久化,则必须使用 EntityManager 的分离方法.

还有 this answer可能会给你更多信息

关于java - 何时需要以及何时不需要手动将更新保存到 JPA 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637657/

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