gpt4 book ai didi

java - Hibernate 是否将从数据库中检索到的集合放入一级缓存?

转载 作者:行者123 更新时间:2023-12-04 08:10:42 24 4
gpt4 key购买 nike

有人可以解释一下 hibernate 是否将集合放入第一个 lvl 缓存
它看起来像吗
RestController 的第一个请求

@GetMapping("/findfoo")
public List<Foo> findFoo(){
List<Foo> listFirst=fooRepository.findAll();
return listFirst;
}
hibernate 会这样做: select * from foo;
和第二次请求
List<foo> listTwo=fooRepositoy.findAll();
hibernate 将从第一个 lvl 缓存中获取 listFirst ?或者它会对数据库执行相同的选择?

最佳答案

实体放在一级缓存( session )中,但不是查询的结果,为此您需要启用二级查询缓存。
换句话说,Hibernate session 会跟踪所有实体,无论它们是从查询加载的(就像这里的情况一样)还是通过延迟加载来自另一个实体的关联。
如果您执行两次查询,它也会使用第二次查询的数据库,但是 Hibernate 将返回相同的 java 对象(== 身份,而不是 equals() 身份)。

关于java - Hibernate 是否将从数据库中检索到的集合放入一级缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65981934/

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