我是项目新手,我注意到在生产服务器中我们有这样的设置:
<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的意义是什么..
此外,对我来说,在没有缓存对象的情况下缓存查询可能会降低效率..不是吗?
答案 0 :(得分:0)
查询缓存可以独立使用,因为它会缓存查询结果的ID,从而无需再次执行查询。
没有人能够告诉您,您的案例中的好处是否高于存储所有查询,结果和查询参数的内存影响。根据数据库的延迟和查询的大小,结果会有所不同,但我个人不会在没有充分理由的情况下使用查询缓存,并且仅针对查询参数不会波动的选定的少数查询。