有人可以解释一下,休眠将集合放入第一个lvl缓存是真的吗?
看起来像
RestController的第一个请求
@GetMapping("/findfoo")
public List<Foo> findFoo(){
List<Foo> listFirst=fooRepository.findAll();
return listFirst;
}
休眠将执行此操作:从foo中选择*;和第二次
List<foo> listTwo=fooRepositoy.findAll();
休眠将从第一个lvl缓存中获取listFirst?还是对数据库执行相同的选择?
将实体放在第一级缓存(会话)中,而不放在查询结果中,因为这将需要启用第二级查询缓存。
换句话说,Hibernate会话会跟踪所有实体,无论是从查询中加载它们(在这种情况下),还是通过从另一个实体中延迟加载关联。
如果您两次查询,它也会在数据库中进行第二次查询,但是Hibernate将返回相同的Java对象(==身份,而不是equals()身份)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句