很明显,默认情况下,当我们执行时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 query
和jpql
查询以查明一级缓存中是否存在相应的实体?