这是在 Hibernate 上运行的 JPA2。
给定它们的 ID,我想检索相同实体类型的多个实例。其中许多已经在持久化上下文和/或二级缓存中。
我尝试了几种方法,但似乎都有其缺点:
- 当我用 遍历 id 时
entityManager.find(id)
,我会为每个非缓存项获得一个查询,即查询太多。 - 使用表单查询
SELECT e FROM MyEntity e WHERE e.id in (:ids)
,缓存的条目将从数据库中重新加载。 - 我可以使用
entityManager.getEntityManagerFactory().getCache().contains(id)
. 这适用于二级缓存,但将在持久性上下文中的条目上返回 false,但不在二级缓存中。
这样做的最佳方法是什么,而不是在低效加载和加载过多之间进行选择?