在Hibernate.xml文件中添加了        <!-- 二级缓存开启 -->
<property name="hibernate.cache.provider_class">
org.hibernate.cache.HashtableCacheProvider
</property> <!-- 查询缓存开启 -->
<property name="hibernate.cache.query_cache_factory">true</property>
为什么我查2次同一条数据都执行2次SQL语句?到底怎么开啊```求解

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xiaomaha】截止到2008-07-04 15:25:29的历史汇总数据(不包括此帖):
    发帖的总数量:54                       发帖的总分数:2344                     
    结贴的总数量:31                       结贴的总分数:1637                     
    无满意结贴数:1                        无满意结贴分:30                       
    未结的帖子数:23                       未结的总分数:707                      
    结贴的百分比:57.41 %               结分的百分比:69.84 %                  
    无满意结贴率:3.23  %               无满意结分率:1.83  %                  
    楼主加油
      

  2.   

    在hbml.xml中的class或set集合类型下,加上 <cache usage="read-write"/>
    如:
    <set name="products" table="products" cascade="all" inverse="true">
               <cache usage="read-write"/>
               <key column="categoryId" not-null="true"/>
               <one-to-many class="Product"/>
    </set>
    usage就是缓存的类型,如只读,读写
      

  3.   

    要分清楚什么是Hibernate的一级缓存,什么是二级缓存一级缓存是session级别的,session关闭就失效了。
    二级缓存实际上是建立在sessionFactory级别的全局缓存需要配置一个ehcache,ehcache主要是对数据库访问的缓存,相同的查询语句只需查询一次数据库,如果使用了Spring,可以使用spring的AOP可以很容易实现这一功能. 
      

  4.   

    三楼的<cache usage="read-write"/>  也是可以的!