Hibernate 二级缓存对 "find by primary key" 以外的任何东西有用吗?
Is Hibernate second level cache useful for anything other than a "find by primary key" ?
据我了解,二级缓存在使用主键查找实体时很有用。
但是将它用于不基于主键的查询有什么意义吗?例如:
SELECT p FROM Person p WHERE p.age > 18
如果查询缓存未打开,二级缓存还有用吗?
不,在那种情况下它没有任何用处。当通过 ID 获取实体或通过 OneToOne 和 ManyToOne 关联导航时(这也会导致实体通过其 ID 加载,除非引用的列不是 PK)时使用 L2 缓存。
据我了解,二级缓存在使用主键查找实体时很有用。
但是将它用于不基于主键的查询有什么意义吗?例如:
SELECT p FROM Person p WHERE p.age > 18
如果查询缓存未打开,二级缓存还有用吗?
不,在那种情况下它没有任何用处。当通过 ID 获取实体或通过 OneToOne 和 ManyToOne 关联导航时(这也会导致实体通过其 ID 加载,除非引用的列不是 PK)时使用 L2 缓存。