java - 查询何时命中 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 query
和jpql
查询以查明一级缓存中是否存在相应的实体?
解决方案
推荐阅读
- android - 如何使用 ViewPager 在特定页面上实现水平和垂直过渡?
- amazon-cloudformation - 使用 AWS Cloudformation 配置具有 SNS 主题的 CloudTrail
- json - 如何在 AWK 中打印 JSON 对象
- assembly - 这相当于 ret 指令吗?
- security - 一个数据库的多个站点和身份验证
- kotlin - Kotlin 替换字符串中的多个单词
- apache-spark - 在 Kubernetes 上运行 spark 的文件访问错误
- java - Spring 自定义范围生命周期 Bean 终止
- javascript - 关闭模态时如何从模态体中删除内容?
- php - 将 MySQL 数据加载到相应的 PHP 变量中