标签: hibernate caching second-level-cache query-cache
据我所知,L2缓存在使用主键查找实体时非常有用。
但是有没有必要将它用于不基于主键的查询? E.g:
SELECT p FROM Person p WHERE p.age > 18
如果查询缓存 NOT 已打开,L2缓存是否可以使用?
答案 0 :(得分:5)
不,在这种情况下它不会有任何用处。 L2缓存用于通过其ID获取实体,或者在通过OneToOne和ManyToOne关联导航时(这也会导致实体通过其ID加载,除非引用的列不是PK)。