在SSH中用二級緩存大概分以下幾步:
1、首先在hbm檔案裡對涉及到的對象設定緩存方式,或根據情況設定自己需要的
2、在ehcache的配置檔案裡配置一個cache,name為這個類名
3、在applicationContext.xml的hibernate配置裡
hibernate.cache.use_query_cache=true
hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
hibernate.cache.provider_configuration_file_resource_path=/ehcache-hibernate.xml
4、接下來就可以使用了
在getHibernateTemplate().find(hql)
之前要設定下
getHibernateTemplate().setCacheQueries(true);
getHibernateTemplate().setQueryCacheRegion("XXXXX");//這行可省略
在之後即查詢完畢後
getHibernateTemplate().setCacheQueries(false);
如果使用了setQueryCacheRegion,那還需要在配置檔案裡添加對應的cache配置,如果不配置,預設使用StandardQueryCache
注意:setCacheQueries方法,If this is "true", all Query and Criteria objects created by this template will be marked as cacheable (including all queries through find methods).
是以建議查詢完畢後,在傳回結果前需要setCacheQueries(false);
通過getHibernateTemplate().find(hql)方式,不會出現N+1情況。