Hibernate笔记------缓存

二级缓存

  1. Hiberante二级缓存
    Hibernate的缓存:
    一级缓存:session级缓存
    二级缓存:sessionFactory级缓存,用处很大(线程级:ehcache)
    三级缓存:分布式缓存(进程级:redis)

  2. 缓存分类

    1. 实体缓存:根据实体的ID进行缓存,缓存的是一个一个的对象
    2. 查询缓存:根据HQL查询语句进行缓存,缓存的是结果集。setCacheable(true)
      缓存:是很多个map(key, value)组成,使用region来区别
  3. ehcache使用

    1.引入ehcache的相关jar包

     ehcache-2.10.3.jar
     hibernate-ehcache-5.3.8.Final.jar
     slf4j-api-1.7.7.jar
    
    1. 编写ehcache.xml配置文件
    
       
    
     
     
     
     
     
     
    
     
     
     
     
     
     	
    
    
    1. 在hibernate.cfg.xml中开启二级缓存,指定EhCache
    true
     	true
     	org.hibernate.cache.ehcache.internal.EhcacheRegionFactory
    
    1. 在实体类上标注@Cache注解
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    
  4. Hibernate的缓存会自动同步更新

    • 缓存什么时候失效

      • 使用update/delete语句进行批量修改时,会导致个缓存(region)全部失效
      • 使用save(), update()会局部更新某个缓存(region)
      • 使用原生SQL的update/delete,也会自动同步缓存
    • 缓存什么时候更新

      • 直接修改数据库的数据,缓存是不会同步的(避免直接修改数据库)

你可能感兴趣的:(hibernate,hibernate,ehcache)