栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Grails应用程序中的Hibernate 2级缓存

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Grails应用程序中的Hibernate 2级缓存

第1部分:

Hibernate做正确的事。查询缓存不是每个实体的。除非您为查询设置特定的区域,否则所有查询共享一个查询高速缓存区域。每次更新表时,都会在时间戳缓存中更新其时间戳。每次执行查询时,会将查询搜索到的每个表的时间戳与缓存结果的时间戳进行比较。当然,仅当缓存的时间戳比所有表的时间戳都近时才返回缓存的结果。

第2部分:

是的,这很有道理。作者的高速缓存记住ID为456的作者的名称为“
foo”,出生日期为1975/07/19。只记住存储在作者表中的数据。因此,缓存关联也很有用:

author.getBooks()
Hibernate不会在调用时进行额外的查询来获取作者的书籍集,而是从其缓存中获取作者的书籍ID,然后从第二个缓存中加载每本书级缓存。不过,请确保缓存书籍。

第3部分:

我可以想象几个原因:

  • 实体太多,而且它们变化如此之大,以至于高速缓存命中的数量将非常低,并且与没有高速缓存的解决方案相比,二级高速缓存处理实际上将消耗更多的时间和内存。
  • 应用程序是集群的,并且分布式二级缓存的成本和复杂性过高,导致收益较低
  • 其他非hibernate应用程序写入同一数据库,因此缓存具有返回陈旧数据的巨大风险,这是不可接受的
  • 如果没有二级缓存,一切都会很好地进行,并且没有理由使应用程序比原来的更加复杂。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435936.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号