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

标签 java hibernate jpa

我最近一直在搜索 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/

相关文章:

java - Spring 启动 Jpa : hibernate as default?

java - GlassFish 4 替代文档不起作用

java - 如何使用 Angular 4 登录?我们使用的主题是使用 fack-bakcend 提供者概念?

java - Hibernate 的 @DynamicUpdate 是否可以与 Blob 一起使用?

java - JPA Criteria 使用单表继承查询实体层次结构

java - 使用 JPA 2.1 生成元模型类

java - 解压缩文件 Zip 异常 : invalid entry size (expected 193144 but got 193138 bytes)

java - java中受密码保护的zip文件

hibernate - 仅 Java EE Hibernate 插入 ?我的 postgresql 数据库中的值

java - BeanUtils.copyProperties() 在 Tomcat 上使用时抛出 NullPointerException