很明显,默认情况下,当我们执行entityManager.find(Post.class, 1L);
时,将检索Post
的{{1}}实例并将其放置在一级缓存中,然后再次执行相同的操作id=1
在同一事务中,发布实例将直接从一级缓存返回,而无需查询数据库。
我的问题如下:
仅当我们尝试通过id获取实体时才检查一级缓存
执行entityManager.find(Post.class, 1L);
方法?我的意思是,如果我们通过ID以外的其他属性(例如,entityManager.find(...);
使用条件查询按名称提取帖子?还是要检查一级缓存吗?
通过Post
,id = 1
或native query
查询同一行怎么办? JPA / Hibernate是否解析jpql
和spring data query method
查询以便找出一级缓存中是否存在相应的实体?