目前,为了检查Hibernate二级缓存是否用于数据库查询,我检查我的SQL日志(通过datasource.groovy中的p6spy或logSql = true)来查看Grais / Hibernate是否触发了SQL查询。我假设如果未记录查询,则可能意味着使用了缓存。
简单的信息非常复杂,不是吗?
那么您是否知道获取和记录信息的简单方法:“使用缓存与触发数据库查询”?
编辑:根据Pascal建议,我已将此trace 'org.hibernate.cache'
添加到我的log4j配置中。
答案 0 :(得分:6)
您可以激活org.hibernate.cache
category来记录所有二级缓存活动。要执行此操作(根据Grails FAQ),请编辑Config.groovy
文件。找到以下行:
hibernate = "off"
并将其替换为:
hibernate.cache = "trace,stdout"
答案 1 :(得分:5)
简短的回答是,当启用查询日志记录时,将记录每个查询。
可通过SessionFactory.getStatistics()
和Session.getStatistics()
获取各种统计信息。 SessionStatistics上没有查询执行和查询缓存命中和未命中计数。
在没有并发会话的测试环境中,您可以执行两次可缓存查询,并断言SessionStatistics.getQueryCacheHitCount()
和SessionStatistics.getQueryExecutionCount()
都只增加1。
Hibernate Profiler可以最有效地显示所有这些统计信息和日志。