我也要使用其它的CACHE来放一些定制的对象。
感觉OSCACHE也不错。当然JBOSSCACHE可以用来集群的环境。但是,我现在有一些字典表。这些想省些代码。
直接利用SPRING把这些对象放进去,
应该是一查这些字典spring 就从中间偷偷地换成它的方法。
然后,不再去查hibernate了。网上写这个文章的没有1000也有800了。但是我真要弄的时候,就碰上了这么个问题。我真的好郁闷呀。我的类和网上写的完全一样,现在的问题是,其本spring就不能进行截获方法。和我没写CACHE一样,

解决方案 »

  1.   

    你的hibernate用了org.hibernate.cache.EhCacheProvider
    是写在XML里面的吧,
    我以前也试过一回这样的,
    发现hibernate 还在查数据库,
    因为打出来的SQL没有减少呀。
      

  2.   

    我结合OSCACHE做了个aop,这样就可以缓存方法的结果了
      

  3.   

    配置我直接写在spring的xml配置文件里的,是否有作用确实没有测试过呀
    惭愧~~~~
    是不是表的hbm.xml文件里面写的有问题,要么包的版本?胡乱猜测一下
      

  4.   

    nearsun(蓝冰)
    把APO的那部分配置发上来偶看看嘛,其实如果是代理的话,
    那都是差不多的。我现在不使用AOP方式,用OSCACHE 的硬放进去,
    是没有问题的。longququ() 
    这种方法代理的方式如果成功了,
    根本就不进hibernate .
    原理就是,只要spring一调                <property name="target">
                            <bean class="com.base.service.Impl.TdCityManagerImpl"/>
                    </property>
                    
    那么spring就把这个类的代理调出来,
    因为他的方法被你的CACHE所匹配,所以直接就返回,CACHE里的内容了。
    如果写在HBM,那还是hibernate的一级CACHE,
    还有load lazy 的麻烦。
    不是不更新,就是更新的不是时候,
    感觉总是不爽。代理的方式,和在代码里写上一个头是差不多的。
    相当于。在你的方法前面。
    加上了,匹配的代码。如果缓存里存在。
    String cacheKey = getCacheKey(targetName, methodName, arguments);
    Element element = cache.get(cacheKey);
    if (element == null) {
    // call target/sub-interceptor
    result = invocation.proceed();
    直接返回缓冲的结果了。
    根本就走不到hibernate 里面的
    所以用OSCACHE应该也是一样的。
      

  5.   

    因为这个类又被事务管理的时候
    我调用的还是事务管理的类。
    这里我就晕了。
    我想把事务管理里面的类的方法要CACHE了。我要怎么调用呢??