gpt4 book ai didi

java - 为什么join查询不命中Hibernate二级缓存?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:31 33 4
gpt4 key购买 nike

我对 Hibernate 二级缓存有些困惑。在我读到的内容中,Hibernate 二级缓存仅存储 id,并且仅在通过 id 查询查找的情况下才有用。为什么 hibernate 在以下情况下不使用缓存缓存连接完成的两个表的 ID 的连接?我运行了一个程序来对此进行测试,发现在启用缓存的情况下,连接查询花费了更多时间。

谢谢!

最佳答案

二级缓存缓存实体的状态,通过ID索引。但它是一个缓存。它仅存储一些 实体(通常是最近使用的)。

所以,即使 Hibernate 可以解析查询,分析它,注意它只包含对实体 ID 的限制,它也不能使用它的缓存来绕过数据库,因为它不知道是否所有的实体都会由数据库返回是否在缓存中。因此它不会执行所有这些操作,而只是像执行任何其他查询一样执行查询。

不过,您可以做的是配置查询缓存。这将使它缓存先前执行的查询返回的实体的 ID。在这种情况下,相同查询(具有相同参数)的第二次执行将被绕过,ID 将从查询缓存返回,状态将从二级缓存加载。

关于java - 为什么join查询不命中Hibernate二级缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16271938/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com