EntityManager 是不是持有对分离实体的引用?
Posted
技术标签:
【中文标题】EntityManager 是不是持有对分离实体的引用?【英文标题】:Does an EntityManager hold references to detached entities?EntityManager 是否持有对分离实体的引用? 【发布时间】:2015-07-28 18:21:43 【问题描述】:在使用 JPA (Hibernate) 时在一些内存限制下运行 我正在寻找一些关于 EntityManager 如何处理分离实体的信息,尤其是他是否保留对它们的任何强引用。
我正在搜索通用 JPA 文档以及 Hibernate 文档,但找不到任何具体信息?从我得到的 EntityManager.clear() 将分离所有实体并使它们可用于垃圾收集。这是否意味着从 EntityManager 中分离实体使其可用于垃圾收集器?如果没有,如何让 Entitymanager 管理的特定实体可用于 GC?
【问题讨论】:
【参考方案1】:Hibernate 不引用分离的实体。如果被托管实体实例引用,它可能会被Hibernate间接引用,但是在清除会话后,就没有托管实例了。
实际上,清除会话以释放内存是batch processing 的官方记录模式。
【讨论】:
Clearning 整个 EntityManager/Hibernate 会话对我来说是不可能的(不幸的是)。以上是关于EntityManager 是不是持有对分离实体的引用?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Doctrine QueryBuilder 或 EntityManager 通过多对多相关实体查找实体