本帖最后由 xuanyuanyilu 于 2010-12-24 10:54:53 编辑

解决方案 »

  1.   

    如果要使用缓存,一般是缓存单个对象,如果你要查询结果集,一般我们会之查询ID,然后根据ID去缓存中查询。
    比如:
    List<Integer> idList = dao.queryForList(...);
    List<Bean> beanList = new ArrayList<Bean>();
    for(Integer id:idList){
       Bean bean = cache.getValue(id);
       if(bean==null){
          bean = dao.getById(id);
          cache.put(id,bean);
       }
       beanList.add(bean);
    }
    return beanList;
      

  2.   


    在缓存期内缓存里有10条,你ID>3应该也是从缓存里取出的。。
      

  3.   

    IBAST也好,Hibernate也好,缓存的策略大同小异:
    在内存里保留一部分查询结果数据,
    定期检查缓存和实际数据库中对应数据的一致性,
    如果遇到后台数据库的增删改操作,刷新内存中缓存数据,
    查询时先从缓存中找,如果找不到,执行数据库查询,并将增量结果放入缓存Hibernate强化的缓存机制有二次缓存,把PO对象按ID做了MAP,定期刷新,更方便应用程序的业务逻辑
      

  4.   

    你的意思是我执行第一次ID>5查询时是把所有记录都放在了缓存里,第二次查询时能在缓存里或得到所有7条正确数据?
    这个说法比较好理解。
    如12楼说的,有个“如果找不到”,它要判断是找得到还是找不到必须每次都得查询数据库,所以这种说法总是很难理解
      

  5.   

    如果第一次是5条,第二次是7条,缓存中应该是7条,就看你这个缓存怎样弄了,索引怎样加了,5条10条还不是自己控制的。就框架来说你觉的怎样是合理的,比如第一次id>5,第二次id>3,你觉得缓存中改用5条合理还是该有7条,显然7条是对的,而且写框架的人肯定比咱聪明,所以啊是7条比较合理,总之这个缓存中肯定有个上限。
      

  6.   

    是撒,看道行高深了,总不能说框架不是人写的吧,框架中总不能缓存所有的数据吧,肯定有个上限滴,上限的控制肯定是认为滴。就说hibernate的session吧,还不是分3类,让你自己写框架你说说你的session中该怎样处理?还不是去一部分缓存,取个上限只能是1000条,超过了就持久化一下或者clear之类的。
    总之一句话思想跟上写框架的人了,自然而然的就知道怎样是合理的了。也就能写自己的框架了!
      

  7.   

    是撒,看道行高深了,总不能说框架不是人写的吧,框架中总不能缓存所有的数据吧,缓存肯定有个上限滴,上限的控制肯定是人为滴。就说hibernate的 session吧,还不是分3类,让你自己写框架你说说你的session中该怎样处理?还不是取一部分缓存,取个上限只能是1000条,超过了就持久化一下或者clear之类的。
    总之一句话思想跟上写框架的人了,自然而然的就知道怎样是合理的了,也就能写自己的框架了!错别字太多,见谅!!