首页 > 解决方案 > 查询何时命中 JPA 一级缓存以及查询何时绕过缓存

问题描述

很明显,默认情况下,当我们执行时entityManager.find(Post.class, 1L);Post实例id=1将被检索并放置在一级缓存中,然后如果我们entityManager.find(Post.class, 1L);在同一个事务中再次执行相同的操作,则 post 实例将直接从一级缓存中返回而无需查询数据库。

我的问题如下:

entityManager.find(...);仅当我们尝试通过 id 执行方法获取实体时才检查一级缓存吗?我的意思是如果我们通过 ID 以外的不同属性获取相同的Post实例(具有),例如使用 Criteria 查询按名称获取帖子?id = 1它仍然要检查一级缓存吗?

native query用,jpql或查询同一行怎么样spring data query method?JPA/Hibernate 是否解析native queryjpql查询以查明一级缓存中是否存在相应的实体?

标签: javahibernatejpaspring-datafirst-level-cache

解决方案


推荐阅读