我最近一直在搜索 JPA 实体生命周期。 但是现在,关于实体生命周期的一些缺失点。我在一篇 stackoverflow 帖子中发现了下图,请记住这张图已被投票。
根据此图,当我们持久化实体时,它就变成了托管实体。 好的 。没问题 。 当我们提交时,数据进入数据库。好的 。 没问题。 但是图表向我们展示了这个提交操作使实体分离! 让我们看看下面的伪代码。
entityManager.persist(entity);
transaction.commit(); // action completed and entity has become detached.(According to the diagram.)
entityManager.remove(entity); //Attention this step please .
在上一步(提交步骤)中。那么如何删除一个分离的对象呢? 如果这个实体变成分离的,我们都知道不可能管理一个分离的实体,因为它不再与持久性上下文相关联。
那么如何才能删除分离的对象呢?你能在这一点上澄清一下吗? 提前致谢!
最佳答案
实体可以通过以下方式之一分离(可能有更多方式):
当事务(在事务范围的持久性上下文中)提交时,由持久性上下文管理的实体将分离。
如果应用程序管理的持久性上下文关闭,所有托管实体都会分离。
使用清除方法
使用分离方法
回滚
在扩展持久性上下文中,当有状态 bean 被删除时,所有托管实体都会分离。
我认为问题可能在于应用程序管理、用户管理、扩展持久性上下文之间的差异。
关于java - JPA 的 commit() 方法是否使实体分离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31964927/