Java 查看缓存的命中和未命中

Java 查看缓存的命中和未命中,java,hibernate,caching,Java,Hibernate,Caching,我正在使用Hibernate和ehcache,并启用了二级缓存。我将@Cacheable放在我的用户实体上,如下所示: @Cacheable @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "usersCache") public class User extends AbstractEntity { ... } 但是当我启用Hibernate的sql日志时,我仍然可以从userId=?查询我想

我正在使用Hibernate和ehcache,并启用了二级缓存。我将@Cacheable放在我的用户实体上,如下所示:

@Cacheable
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "usersCache")
public class User extends AbstractEntity {

...


}
但是当我启用Hibernate的sql日志时,我仍然可以从userId=?查询我想这可能是正常的行为,缓存过程对Hibernate是透明的,Hibernate只是查询,然后ehcache截取它并从缓存中获取数据。。。因此,如何查看查询是命中还是未命中?

如果将hibernate.generate\u statistics属性设置为true,则可以启用。然后,您可以通过SessionFactory.getStatistics监视缓存命中/未命中计数

提供此信息

也可以通过JConsole查看,请参阅

SessionFactory.getStatistics().getSecondLevelCacheStatistics()