ehcache简单使用

系统 2101 0

项目中需要实现一个功能,定时查询FTP服务器某个目录下的文件,并及时下载至本机,同时不能消耗太多系统资源。
最后实现是使用ehcache,将文件路径和文件大小缓存,如果前后两次无变化,则忽略。如果同一路径大小有变化,则下载此文件。
当然,由于缓存的不可靠近,如果数据库可以支持,可以将数据写入表中,对数值进行标记。这样更加可靠。
以下是ehcache的简单应用。

1、下载ehcache的相关jar文件并放置到Java Web工程的WebRoot/WEB-INF/lib目录下;
SSH架构下ehcache缓存模块的配置使用
2、编辑JPA配置文件 persistence.xml:

      
        <
        
          property
        
        
          name
        
        =
        
          "hibernate.cache.provider_class"
        
         value=
        
          "net.sf.ehcache.hibernate.SingletonEhCacheProvider"
        
        />       

<
        
          property
        
        
          name
        
        =
        
          "hibernate.cache.use_query_cache"
        
         value=
        
          "true"
        
        />

<
        
          property
        
        
          name
        
        =
        
          "hibernate.cache.use_second_level_cache"
        
         value=
        
          "true"
        
        />
      
    

3、将ehcache的配置文件ehcache.xml放置在Java Web工程的src目录下,并根据自身需要进行类似如下的配置:

      
        
          <
          
            cache
          
          
            name
          
          =
          
            "edu.bupt.laaip.model.Question"
          
          
            maxElementsInMemory
          
          =
          
            "500"
          
          
            eternal
          
          =
          
            "false"
          
          
            timeToIdleSeconds
          
          =
          
            "1800"
          
          
            timeToLiveSeconds
          
          =
          
            "3600"
          
          
            overflowToDisk
          
          =
          
            "false"
          
           />
        
      
    

4、在你想要添加缓存的JPA实体类上添加标签如下:

      
        
          package
        
         edu.bupt.laaip.model;




        
          import
        
         java.io.Serializable;


        
          import
        
         java.util.Date;


        
          import
        
         javax.persistence.*;




        
          import
        
         org.hibernate.annotations.Cache;


        
          import
        
         org.hibernate.annotations.CacheConcurrencyStrategy;




        
          @Cache
        
        (usage = CacheConcurrencyStrategy.READ_WRITE)


        
          @Entity
        
        
          public
        
        
          
            class
          
          
            Question
          
          
            implements
          
          
            Serializable
          
          {
        
        



    ……

}


      
    

5、在执行查询的query语句上设置cacheable属性,以便将查询结果存入缓存:

      
        
          @SuppressWarnings
        
        (
        
          "unchecked"
        
        )

    
        
          @Override
        
        
          public
        
         List 
        
          getAll
        
        () {

       
        
          // TODO Auto-generated method stub
        
        

       Query query = getEntityManager().createQuery(
        
          "select q FROM Question q"
        
        );

       query.setHint(
        
          "org.hibernate.cacheable"
        
        , 
        
          true
        
        );

       
        
          return
        
         query.getResultList();

    }
      
    

参考链接:
http://blog.sina.com.cn/s/blog_6826662b01017tgg.html

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

ehcache简单使用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论