我相信通过明智地使用 Hibernate 的 2 级缓存将在我的应用程序的性能方面做得很好,为此我已经开始从 Internet 和 Hibernate 课程中学习它。尽管对二级缓存及其工作方式有很好的解释,但我的目标是弄清楚事情是如何工作的,从我没有找到的具体问题开始,因此我一般会问一些关于 Hibernate 缓存的问题特别是在二级缓存上。
回答注意事项:
答:即使有些问题看起来很明显或无关紧要,我也很乐意回答。
B. 如果问题取决于缓存提供者,我想听听有关 Ehcache
C 的答案。由于不确定性而回答部分问题将受到欢迎
问题:
一旦配置了二级缓存,一级缓存会被禁用吗?如果不是,那么在尝试获取实体时如何发生事件过程,首先命中哪个缓存级别?
查询缓存是将查询文本保存为 HQL 还是原生 SQL?
二级缓存是否会通过 JPA 和 Hibernate 直接使用 Hibernate 进行相同的工作?
我了解查询缓存通过使用位于查询缓存中的 ID 访问二级缓存来参与二级缓存。如果某些 ID 由于某种原因不再位于二级缓存中,会再次获取所有实体,还是仅获取不存在的部分?
关于同步——通过在某个事务中更新存储在二级缓存中的实体——实体何时会在二级缓存中更新?将了解此行为如何影响二级缓存和查询缓存的 更多细节。
谢谢!