分离实体和被管理实体

Posted

技术标签:

【中文标题】分离实体和被管理实体【英文标题】:Detached Entity and Managed Entity 【发布时间】:2012-01-16 12:10:03 【问题描述】:

“分离的实体”是什么意思? 如何在事务期间将托管实体转换为分离实体?

【问题讨论】:

【参考方案1】:

分离实体是其状态不能由 JPA 提供者反映的实体。

换句话说,如果您更改其状态(即通过 setter 方法),这些更改将不会保存到底层数据库,因为 JPA 提供者不必“观察”此类实体。

如果实体 E1 是托管实体,您可以使其分离调用(非常合理的命名)方法 EntityManager#detach(E1)。您还可以使用EntityManager#clear(),它将清除整个 PersistenceContext 并有效地使所有托管实体分离。

【讨论】:

请注意,并非所有版本的 JPA 实现都提供分离功能【参考方案2】:

Here您可以阅读有关 JPA 实体生命周期的信息。

例如,可以在序列化或关闭持久性上下文后分离实体。

【讨论】:

【参考方案3】:

实际上,分离的实体是什么意思?

分离的实体对象是处于特殊状态的对象,它们不受任何EntityManager 管理,但仍表示数据库中的对象。阅读更多source

以及如何在事务期间将托管实体转换为分离实体?

Read here

【讨论】:

以上是关于分离实体和被管理实体的主要内容,如果未能解决你的问题,请参考以下文章

删除分离实体spring jpa Repository接口

em.merge将对分离实体的状态做什么?

实体框架分离实体和相关实体消失

实体框架分离的实体不相等

实体框架 - 分离和重新附加实体?

在 grails 中获取分离的域实体