我的意思就是说  hibernate缓存  怎么让他查询的时候 不一会查这一会查那

解决方案 »

  1.   

    一级缓存是session级的缓存  没有关的话 那么缓存一直存在
    下次再查询就不会去数据库查了  会先查询缓存
      

  2.   

    1.首先我要请问楼主 "我每次操作完以后,比如删除或者修改或者增加以后,然后重复刷新,会出现不同的数据,即使我把这个数据删了也会出现不同的数据" 是什么意思,不是很明白2.楼主如果是使用struts框架并且使用forward的话,刷新代表重复提交即重复删除,既然在非查询以外的业务逻辑都关闭session,那么session.hashcode肯定有时不同。3.至于删除后的数据还能够显示,我想可能和你设置的commit 和 session.close有关系
      

  3.   

    每次commit前调用session.flush()是可以清理缓存的
      

  4.   

    你刷新的时候,问题出现了;
    F5刷新,执行的是使你上次的操作重复一遍;
    很简单,你查询时候;
    public List select() {
    session = sf.openSession();
    Query q = session.createQuery("from User";
    ......
    }
    是这样没错吧;
    你刷新的时候很自然的重新开启一个新的session,及时没有关闭前一个session,他也会开心的;
      

  5.   

    hibernate中有的方法来支持cache,,有的不支持有 
    1.session cache
    2.sessionFactory cache
    3 query cache.
     
      

  6.   

    每次进行数据库的操作,比如save、saveOrupdate、delete等
    后面都加上session.flush();
      

  7.   

    我用Eclipse自动生成的DAO类时也遇到了类似的问题,至今还没解决。
    什么session.flush()
    session.close()
    session.clear()
    等方法都用过了也没有用
    更新后的数据在刷新页面的时候总是随机性地出性正确值和脏数据
    不知道谁能解决
      

  8.   

    不是二级缓存的问题,二级缓存默认就不是打开的,
    另外hashcode也不是判断session是不是同一session的方法吧
    你没有贴出来代码,不过应该是频繁操作的时候没有session.flush()的缘故吧;
      

  9.   

    你是怎么删除的数据,如果是用hql语句的话,就很有可能在缓存中产生了脏数据,就有可能照成这种情况。
      

  10.   

    一级缓存是session级的缓存  没有关的话 那么缓存一直存在 
    下次再查询就不会去数据库查了  会先查询缓存