gpt4 book ai didi

java - JPA 的 commit() 方法是否使实体分离?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:38 27 4
gpt4 key购买 nike

我最近一直在搜索 JPA 实体生命周期。但是现在,关于实体生命周期的一些缺失点。我在一篇 stackoverflow 帖子中发现了下图,请记住这张图已被投票。

JPA Entity Life Cycle

根据此图,当我们持久化实体时,它就变成了托管实体。好的 。没问题 。当我们提交时,数据进入数据库。好的 。没问题。但是图表向我们展示了这个提交操作使实体分离!让我们看看下面的伪代码。

entityManager.persist(entity);
transaction.commit(); // action completed and entity has become detached.(According to the diagram.)
entityManager.remove(entity); //Attention this step please .

在上一步(提交步骤)中。那么如何删除一个分离的对象呢?如果这个实体变成分离的,我们都知道不可能管理一个分离的实体,因为它不再与持久性上下文相关联。

那么如何才能删除分离的对象呢?你能在这一点上澄清一下吗?提前致谢!

最佳答案

实体可以通过以下方式之一分离(可能有更多方式):

  1. 当事务(在事务范围的持久性上下文中)提交时,由持久性上下文管理的实体将分离。

  2. 如果应用程序管理的持久性上下文关闭,所有托管实体都会分离。

  3. 使用清除方法

  4. 使用分离方法

  5. 回滚

  6. 在扩展持久性上下文中,当有状态 bean 被删除时,所有托管实体都会分离。

我认为问题可能在于应用程序管理、用户管理、扩展持久性上下文之间的差异。

关于java - JPA 的 commit() 方法是否使实体分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31964927/

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