gpt4 book ai didi

hibernate - 2级缓存如何与getAll和get in gorm一起使用?

转载 作者:行者123 更新时间:2023-12-02 15:00:50 24 4
gpt4 key购买 nike

嗨,您已为域类设置了“缓存为真”,这意味着已启用缓存

static mapping = {
cache true
}

现在,如果我说 DomianClass.get(1),它不会命中数据库,但是当我使用 DomianClass.getAll()时,它将命中数据库。
DomianClass.getAll()是不是从缓存中获取?为什么它每次都命中数据库?
是否有任何选项可从二级缓存中获取所有记录?

最佳答案

休眠第二级高速缓存无法确定高速缓存中是否存在“全部”。让我们通过一些例子来解释为什么。

情况1

DomainClass.get(1)询问缓存是否存在1。如果是这样,则将其返回,如果未命中数据库,则将其缓存并返回。来自缓存的进一步的1请求将从缓存返回。

情况#2

DomainClass.getAll()询问缓存是否存在“全部”。然后,缓存必须考虑“这是什么意思?”唯一的逻辑响应是“我不知道,但是数据库知道。”

现在,在情况2中,您可能会想起如果您请求“全部”,那么缓存可以缓存该响应。但是,这与用于休眠的第二级缓存不同。

简而言之,二级缓存是针对实例的,由域类和身份索引。

关于hibernate - 2级缓存如何与getAll和get in gorm一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827343/

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