Hibernate二级缓存奇怪的设置

时间:2016-02-29 20:14:57

标签: java hibernate

我是项目新手,我注意到在生产服务器中我们有这样的设置:

<prop key="hibernate.dialect">${db.dialect}</prop>
                <prop key="hibernate.show_sql">${show.sql}</prop>
                <prop key="hibernate.bytecode.use_reflection_optimizer">false</prop>
                <prop key="hibernate.cache.provider_class">Custom org.jboss.hibernate.jbc.cacheprovider.TreeCacheProvider</prop>
                <prop key="hibernate.cache.use_second_level_cache">false</prop>
                <prop key="hibernate.cache.use_query_cache">true</prop>

我怀疑这种组合是否合适:

 <prop key="hibernate.cache.use_second_level_cache">FALSE</prop>
 <prop key="hibernate.cache.use_query_cache">TRUE</prop>

在不使用二级缓存的情况下缓存查询的目的是什么? 在这种情况下设置provider_class的意义是什么..

此外,对我来说,在没有缓存对象的情况下缓存查询可能会降低效率..不是吗?

1 个答案:

答案 0 :(得分:0)

查询缓存可以独立使用,因为它会缓存查询结果的ID,从而无需再次执行查询。

没有人能够告诉您,您的案例中的好处是否高于存储所有查询,结果和查询参数的内存影响。根据数据库的延迟和查询的大小,结果会有所不同,但我个人不会在没有充分理由的情况下使用查询缓存,并且仅针对查询参数不会波动的选定的少数查询。