在hibernate 3.3中启用查询缓存

时间:2013-11-20 11:08:35

标签: hibernate

我试图在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查询

我做错了什么.. ???

1 个答案:

答案 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)

诠释。