二级缓存

缓存:介于应用程序和永久存储介质(硬盘,U盘,磁带,刻录CD)之间,其作用是将降低应用程序和硬盘介质的直接读写频率。从而提升应用程序的性能,缓存一般是在内存中。

数据库缓存:要减少与数据库间的频繁操作。可以大大提升数据访问速度。

缓存 : 应用程序-(缓存(内存))-硬盘

二级缓存

hibernate中一级缓存就是session级别的缓存,在同一次请求中共享数据。
hibernate中二级缓存就是sessionFactory,整个应用程序共享一个会话工厂,共享一个二级缓存

sessionFactory缓存分为两部分:
1.内置缓存:内部会使用一个map,用于存储配置信息,存储预定义HQL语句。只读。
2.外置缓存:用于存储用户自定义数据,默认未开启,外置缓存hibernate只提供了规范(接口),并未实现,需要借助第三方类。可读写。

二级缓存、可以缓存的内容

1.类级别缓存
2.集合级别缓存
3.时间戳缓存
4.缓存查询结果

缓存的级别

1.事务级缓存(translation) 、 性能低

  • 2.读写缓存(read-write)、 适用经常读,很少写的环境。更新时会锁定缓存中数据。
  • 3.只读型(read-only) 、从来不会被修改的数据。 做更新会出现异常。
    4.非严格读写(nonstrict-read-write),更新时不锁定数据,容易脏读写。

缓存应用场景-适合放入二级缓存的数据

  • 很少被修改的数据
  • 不重要的数据

二级缓存常见供应商(第三方缓存技术)

  • 1.ehcache. 支持集群 ,不支持事务级缓存
  • 2.Jbosscache.
  • 3.swamecache
  • 4.openSymphony.

集成步骤

1.导入对应的jar包
2.配置applicationContext.xml设置开启二级缓存

                
            true
            
            true
            
            
                org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
            

3.配置ehcache.xml 文件说明缓存方案



    
    
    
    

4.查询缓存,要在代码中设置开启查询缓存

this.getHibernateTemplate().setCacheQueries(true);

5.可以自定义hibernateTemplate



    
    




    

你可能感兴趣的:(二级缓存)