2010-02-28 35 views
12

目前,爲了檢查Hibernate二級緩存是否用於數據庫查詢,我檢查了我的SQL日誌(通過Datasource.groovy中的p6spy或logSql = true)以查看Grais/Hibernate是否觸發了一個SQL查詢。我假設如果查詢未被記錄,這可能意味着使用了緩存。如何知道/記錄是否使用Hibernate二級緩存進行查詢?

這對於簡單的信息來說相當複雜,不是嗎?所以你知道一個簡單的方法來獲取和記錄信息:「緩存被使用與數據庫查詢被觸發」嗎?

編輯:遵循Pascal建議,我已將這個trace 'org.hibernate.cache'添加到我的log4j配置。

回答

6

您可以激活org.hibernate.cachecategory來記錄所有二級緩存活動。要這樣做(根據Grails FAQ),編輯您的Config.groovy文件。找到行:

hibernate = "off" 

,取而代之的是:

hibernate.cache = "trace,stdout" 
5

簡短的回答是,當啓用查詢日誌時,每個查詢都會被記錄下來。

各種統計數據可通過SessionFactory.getStatistics()Session.getStatistics()獲得。在SessionStatistics上查詢執行和查詢緩存命中和未命中計數不可用。

在測試環境中,你沒有併發會話,你可以進行兩次您的緩存查詢和斷言兩者SessionStatistics.getQueryCacheHitCount()SessionStatistics.getQueryExecutionCount()僅增加了1

Hibernate Profiler呈現所有這些統計數據和日誌的最有效的。

相關問題