二级缓存

1. 为什么需要缓存


   拉高程序的性能
   
   
   关系型数据库:数据与数据之间存在关系(联系)的数据库    mysql/Oracle、sqlserver
   非关系型数据库:数据与数据之间是不存在关系的,key-value
        1、基于文件存储的数据库:ehcache
        2、基于内存存储的数据库:redis、memcache
        3、基于文档存储的数据库:mongodb


2. 什么样的数据需要缓存


   很少被修改或根本不改的数据    数据字典
  
   业务场景比如:耗时较高的统计分析sql、电话账单查询sql等

 

3. ehcache是什么


   Ehcache 是现在最流行的纯Java开源缓存框架,配置简单、结构清晰、功能强大
   
 


4. ehcache的特点


  4.1 够快

  4.2 够简单
 
  4.3 够袖珍(small foot print ,一般Ehcache的发布版本不会到2M,V 2.2.3 才 668KB。)
      
  4.4 够轻量(  核心程序仅仅依赖slf4j这一个包,没有之一!)
   
  4.5 好扩展(提供了对大数据的内存和硬盘的存储,最近版本允许多实例、保存对象高灵活性、提供LRU、LFU、FIFO淘汰算法,基础属性支持热配置、支持的插件多)
   
  4.6 监听器(    缓存管理器监听器 (CacheManagerListener)和 缓存监听器(CacheEvenListener),做一些统计或数据一致性广播挺好用的)
 
  4.7 分布式缓存(Ehcache 1.2开始,支持高性能的分布式缓存,兼具灵活性和扩展性)
      从


3. ehcache的使用


  3.1 导入相关依赖
      <dependency>
          <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
        <version>2.10.0</version>
      </dependency>

  
  3.2 核心接口
      CacheManager:缓存管理器
      Cache:缓存对象,缓存管理器内可以放置若干cache,存放数据的实质,所有cache都实现了Ehcache接口
      Element:单条缓存数据的组成单位

  3.3 src:ehcache.xml

      

4. hibernate缓存


  4.1 一级缓存
      session

  4.2 二级缓存
      SessionFactory
      可拔插式
      

5. hibernate(5.2.12.Final)中使用二级缓存步骤(ehcache)

  5.1 导入ehcache相关依赖


      <dependency>
         <groupId>org.hibernate</groupId>
         <artifactId>hibernate-ehcache</artifactId>
        <version>5.2.12.Final</version>
      </dependency>

  5.2 src添加ehcache.xml


  5.3 hibernate.cfg.xml中添加二级缓存相关配置
      <!-- 开启二级缓存 -->


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


      <!-- 开启查询缓存 -->


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


      <!-- EhCache驱动 -->


      <property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>


  5.4 指定实体类开启二级缓存
      <!-- 注解式开发 -->


      <class-cache usage="read-write" class="entity.Dict"/>

      <!-- xml配置方式 -->


      <class table="t_sys_dict" name="entity.Dict">
        <cache usage="read-write"/> 
                .......
      </class>

 

     注1:查全部需要编写代码来开启二级缓存的
     query.setCacheRegion("entity.Dict");//指定缓存策略,名字必须实体类的完整类名
     query.setCacheable(true);//手动开启二级缓存



   
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值