当前位置: 首页 > 面试题库 >

何时使用EntityManager.clear()?

亢雅懿
2023-03-14
问题内容

定制JPA映射器类具有以下方法:

removeUser()

1. execute 'DELETE' HQL query to remove user
2. call getEntityManager().flush();
3. call getEntityManager().clear();

如果我正确理解clear(),它将从上下文中删除所有持久性实体。-资源

但是,我也在这里阅读,

you should define clear architecture- and design guidelines about where a 
clear() can be called.

关于何时调用clear()的明确准则是什么?


问题答案:

文章对此进行了解释。清除实体管理器将清空其关联的缓存,从而迫使新的数据库查询在事务中稍后执行。使用事务绑定的实体管理器时,几乎几乎不需要清除实体管理器。我看到有两个原因需要清除:

  • 在进行批处理时,为了避免由于长时间的脏检查而导致巨大的缓存占用内存并增加刷新时间
  • 当您执行DML或SQL查询时,它们完全绕过了实体管理器缓存(如您的示例)。在这种情况下,由于查询的原因,缓存保留的状态无法反映数据库中的内容,因此您希望清除缓存以避免这种不一致。


 类似资料:
  • 自定义JPA映射器类有一个方法: 如果我正确理解clear(),它将从上下文中删除所有持久实体-来源 然而,我也在这里读到, 关于何时调用 clear() 的明确准则是什么?

  • 问题内容: 我一直在nodejs中编程,研究了如何同时使用socket.io和对节点服务器的ajax调用。socket.io是否设计为替代ajax?我很好奇,在哪种情况下使用socket.io更好,而哪种ajax更好。感谢您的输入。 问题答案: 好吧,Web套接字(通过socket.io)提供的主要内容之一就是ajax缺乏的是服务器推送。因此,对于ajax,如果您想了解服务器上的新事件(例如,另一

  • 我和我的团队一直在使用Spring boot开发一系列微服务。由于服务经历了JUnit和Spring Boot升级(我们现在使用的是Spring Boot 2和JUnit 5),不同开发人员实现的不同JUnit现在使用不同的模式: @扩展为 今天,它们之间的区别是什么?我们真的需要它们来进行单元测试还是嵌入到一些新的Spring Boot注释中?

  • 问题内容: 我得到了asyncio在Python 3.5 中使用的流程,但是我还没有看到关于我应该使用什么东西,我不应该使用的await东西或者它在哪里容易出现的描述。我是否仅需要根据“这是IO操作并应进行await编辑” 来做出最好的判断? 问题答案: 默认情况下,所有代码都是同步的。你可以使用使其异步定义函数,async def并使用来“调用”这些函数await。一个更正确的问题是“什么时候应

  • 问题内容: 我感觉好像总是被教导要使用s,并且我经常看到它们与s 混合使用,以在应该在不同页面上执行相同操作的几段代码中完成相同类型的查询。开始: 那就是我正在从事的工作: 我看到很多像: 似乎LEFT也可能是INNER,有没有抓住的机会? 问题答案: 有收获吗?是的-左联接是外联接的一种形式,而内联接是内联接的一种形式。 这是显示差异的示例。我们将从基本数据开始: 在这里,我们将看到内部联接和左

  • 我编写jUnit测试用例有3个目的: 确保我的代码满足所有(或大部分)输入组合/值下所需的所有功能。 以确保我可以更改实现,并依靠JUnit测试用例来告诉我,我的所有功能仍然得到满足。 作为我的代码处理的所有用例的文档,并作为重构的规范--如果需要重写代码的话。(重构代码,如果我的jUnit测试失败--您可能错过了一些用例)。 我不明白为什么或者什么时候应该使用。当我看到被调用时,它告诉我,我的j