我试图在hibernate 3.3中使用DAO层的其余调用实现启用查询缓存
我在hibernate-core-cfg.xml中进行了这项更改
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
<property name="hibernate.show_sql">true</property>
并在Hibernate_impexp.cfg.xml中进行了更改 评论了以下代码
<!-- Disable the second-level cache
<property name="hibernate.cache.use_second_level_cache">false</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider </property> -->
我的代码更改为休闲
DAO实施文件为
public List<UserRoleEntity> getUserRolesByUserId(long userId)
{
getHibernateTemplate().setCacheQueries(true);
return (List<UserRoleEntity>) this.getHibernateTemplate().findByNamedQueryAndNamedParam(
"getUserRolesByUserId", "userId", userId);
}
当我调用此休息调用时,我可以看到每次进行这些休息调用时都会触发hibernate查询
我做错了什么.. ???
答案 0 :(得分:0)
您是否尝试启用二级缓存?
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.EhCacheRegionFactory</property>
请记住将实体配置为使用缓存。通过添加
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
诠释。