在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情況。