コントローラーから呼び出される次のクエリをキャッシュしようとしています。
def approvedCount = Book.countByApproved(true, [cache: true])
Book
追加して、クラスの第 2 レベルのキャッシュを有効にしました。
static mapping = {
cache true
}
にBook.groovy
。また、次のように構成していますDataSource.groovy
hibernate {
cache.use_second_level_cache = true
cache.use_query_cache = true
cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
この同じファイルlogSql=true
で、dataSource
ブロックを追加してクエリ ログを有効にしました。
ページをロードするたびにBook.countByApproved(true)
クエリがログに記録されるので、これは結果がクエリ キャッシュから取得されていないことを意味すると思いますか? すべてをローカルで実行しているため、キャッシュされたクエリ結果が (別のユーザーの操作によって) 無効化されたためにキャッシュが失われる可能性はありません。