我正在使用 Hibernate 和 ehcache,并启用了二级缓存。我将 @Cacheable 放在我的 User 实体上,如下所示:
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "usersCache")
public class User extends AbstractEntity {
...
}
但是当我启用 Hibernate 的 sql 日志记录时,我仍然看到我的“select * from users where userId = ?”查询...我想这可能是正常行为,并且缓存过程对 Hibernate 来说是透明的,这只是查询然后 ehcache 拦截该数据并从缓存中获取数据...那么我如何查看查询是命中还是未命中?
最佳答案
您可以启用Hibernate statistics generation将 hibernate.generate_statistics 属性设置为 true 。然后,您可以通过 SessionFactory.getStatistics() 监控缓存命中/未命中计数。
SessionFactory.getStatistics().getSecondLevelCacheStatistics()
提供此信息。
也可以通过JConsole
查看,引用this .
关于java - 查看缓存的命中和未命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25769969/