java - 查看缓存的命中和未命中

标签 java hibernate caching

我正在使用 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/

相关文章:

java - session.createQuery() 在 spring 中不返回列表

hibernate - grails 2.4.3 升级后不必要的数据库 changeSet 与 boolean 相关

java - 使用 Java 的 Android 应用程序 - udp 字符串不发送

java - 如何从 webview 在默认视频播放器中播放 youtube 视频?

sql-server - Hibernate 中的 setMaxResults(N) 如何工作?

caching - Jenkins 禁用或清除 Maven 构建的缓存

php 和 htaccess,如何仅在一个目录中禁用图像缓存

caching - 在第一个后端为404的情况下,将第二个后端与Varnish 1.0.3-2一起使用

java - 我的java程序可以使用磁盘作为大对象的堆吗?

java - 使用java程序将文件从一个位置复制到Linux中的另一个位置