我正在使用启用了二级缓存的Hibernate和ehcache。我将@Cacheable放在我的用户实体上,如下所示:
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE, region = "usersCache")
public class User extends AbstractEntity {
...
}
但是当我启用Hibernate的sql日志记录时,我仍然看到我的`select *来自用户userdd =?"查询...我想也许这是正常的行为,缓存进程对Hibernate来说是透明的,只是查询然后ehcache拦截并从缓存中获取数据...所以如何查看查询是否是命中还是错过?
答案 0 :(得分:1)
您可以启用Hibernate statistics generation设置hibernate.generate_statistics property to true
。然后,您可以通过SessionFactory.getStatistics()
监控缓存命中/未命中计数。
SessionFactory.getStatistics().getSecondLevelCacheStatistics()
提供此信息。
也可以通过JConsole
查看,请参阅this。