2016-02-29 70 views
0

我是新来的项目,我已经注意到,在生产服务器上我们有这样的设置: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有什么意义..

此外,对于我缓存q没有缓存对象的ueries可能会降低效率..是不是正确?

回答

0

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

没有人能够告诉你,您的案例的好处是否高于存储所有这些查询,结果和查询参数的内存影响。取决于数据库的延迟以及查询结果的巨大程度会有所不同,但我个人不会在没有很好理由的情况下使用查询缓存,并且只适用于查询参数不会波动的选定少数查询。