【发布时间】:2023-06-09 23:51:01
【问题描述】:
我相信通过明智地使用 Hibernate 的二级缓存可以很好地提高我的应用程序的性能,为此我已经开始从 Internet 和 Hibernate 课程中学习它。 尽管对二级缓存及其工作方式有很好的解释,但我的目标是弄清楚事情是如何工作的,从我没有找到的具体问题开始,因此我一般会问一些关于 Hibernate 缓存的问题尤其是二级缓存。
答题注意事项:
A.即使有些问题看起来很明显或无关紧要,我也将不胜感激。
B. 如果问题取决于缓存提供者,我想听听有关 Ehcache 的答案
C. 欢迎回答部分不确定性问题
问题:
-
一旦配置了二级缓存,一级缓存会被禁用吗?如果不是,那么在尝试获取实体时如何发生事件过程,首先命中哪个缓存级别?
-
查询缓存是将查询文本保存为 HQL 还是原生 SQL?
-
通过 JPA 和 Hibernate 直接使用 Hibernate 时,二级缓存的工作方式是否相同?
-
我了解查询缓存通过使用位于查询缓存中的 ID 访问二级缓存来参与二级缓存。如果某些 ID 由于某种原因不再位于二级缓存中,会再次获取所有实体,还是仅获取不存在的部分?
-
关于同步——通过在某个事务中更新存储在二级缓存中的实体——如果有的话,何时会在二级缓存中更新实体?将欣赏更多详细信息,了解此行为如何影响 2 级缓存和查询缓存。
谢谢!
【问题讨论】:
标签: java hibernate ehcache second-level-cache query-cache