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

如何禁用hiberbate缓存

邵奇
2023-03-14
问题内容

我正在尝试编写一个单元测试类,该类必须使用相同的查询以相同的测试方法两次从数据库中获取结果。但是,由于第二次启用了Hibernate缓存,因此它实际上并没有访问数据库,只是从缓存中获取结果。

有人可以回答如何禁用中的缓存persistence.xml

我试图通过更改属性hibernate.cache.use.query_cache = false 和禁用它 hibernate.cache.use_second_level_cache = false。

但是它没有用。


问题答案:

有人可以回答如何在persistence.xml中禁用缓存。

默认情况下,第二级缓存和查询缓存是禁用的(除非您显式缓存它们,否则不会缓存查询)。一级缓存无法禁用。

我试图通过更改属性来禁用(…)

如果启用了二级缓存和查询缓存,则将禁用它们。

但是它没有用。

老实说,“它没有用”对于当前行为与预期行为的描述很差。提供更多详细信息(伪代码),SQL跟踪可能会有所帮助。

话虽这么说,如果问题是关于HQL的,那么HQL查询肯定应该在后续执行时命中数据库(没有任何查询缓存)。如果需要遵守此要求,请激活SQL日志记录。

如果问题是关于Session#get()Session#load(),则可以使用Session#refresh()或调用重新加载实体的状态Session#clear()以完全清除会话。



 类似资料:
  • 问题内容: 使用时出现缓存问题。 我用来将数据插入MySQL数据库。然后,我有另一个应用程序处理此数据,并直接对其进行更新。 但是总是返回旧数据而不是更新数据。我认为已缓存了我的请求……所以……我应如何禁用它? 问题答案: 人们通常认为,除了在事务本地使用的常规SQLAlchemy身份映射之外,还存在“缓存”的作用,这是因为他们正在观察事务隔离的影响。默认情况下,SQLAlchemy的会话在事务模

  • 问题内容: 当我使用Alamofire两次发送GET请求时,我得到的响应是相同的,但是我期望得到不同的响应。我想知道这是否是由于缓存造成的,如果是这样,我想知道如何禁用它。 问题答案: 迅捷3,alamofire 4 我的解决方案是: 为Alamofire创建扩展: 并使用它:

  • 问题内容: 我正在尝试在特定网站上抓取网页。该网页因我发送的不同Cookie的设置而有所不同。 如果我一一请求到网页,它给我正确的结果,但是当我在for循环中发送这些cookie时,它给了我相同的结果。我认为scrapy正在为我创建缓存,并在第二个请求中从缓存中获取响应。这是我的代码: 我希望print语句应为两个请求提供不同的结果。 如果不清楚,请在评论中提及。 问题答案: 缓存可以通过两种方式

  • 问题内容: 在我的Django应用程序中,我反复在数据库上运行相同的查询(例如,每10秒运行一次)。然后,我在收到的查询集上创建一个MD5和,并将其与上一次运行中创建的MD5和进行比较。如果两者相等,则数据没有更改,并且不需要更新网页。 在执行此操作时,数据库中的数据可能会更改。 但是,显然由于查询缓存,该查询返回相同的查询集。 如何禁用查询缓存并在数据库上显式执行查询? 问题答案: 我遇到了我认

  • 在定义缓存时,不管提供程序是什么(对于intance Caffeine来说),我们通常将它们定义为bean,然后通过Spring Boot的自动配置将bean解析为。例如 不幸的是,这在Redis中是不可能的,因为它的实现不是公共的。 我们喜欢做的另一件事是定义bean,例如使用咖啡因 因此,目前唯一的解决方案是创建我们自己的RedisCacheManager,但这会阻止的使用。 所以这是我的问题

  • 问题内容: 如何禁用缓存? 应该设置哪些标头? 您能提供一个代码段吗? 问题答案: 这会将响应的缓存设置为禁用: