1、缓存定义
缓存(Cache):计算机领域非常通用的概念。它介于应用程序和永久性数据存储源(如硬盘上的文件或者数据库)之间,
其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行性能。
缓存中的数据是数据存储源中的数据拷贝。
缓存的物理介质通常是内存。
如果缓存存在内存不够用,可以将缓存临时写入文件(硬盘)
虚拟内存:将内存中一部分不常用的写到硬盘中去
2、二级缓存介绍
2.1、一级缓存:
session级别缓存,hibernate实现了,必须使用的。
一级缓存用户自己共享数据
2.2、二级缓存:
SessionFactory级别缓存,hibernate提供规范(接口),如果需要使用必须有实现类(第三方实现)。
二级缓存默认不使用的,如果需要使用必须手动配置
二级缓存:用户之间共享数据
2.3、SessionFactory缓存:
内置缓存:Hibernate自带的,不可卸载,用于存放配置信息(例如:命令查询hql语句等),只读的,hibernate自己使用,我们不能操作的
外置缓存:二级缓存,需要配置
2.4、二级缓存结构
1.类缓存
2.集合缓存
3.时间戳
4.查询缓存:三级缓存(非官方)
2.5、并发访问策略
read-write :读写型(要掌握)
read-only :只读型(要掌握)
2.6、存放的数据对比
适合放入二级缓存中的数据:
很少被修改
不是很重要的数据,允许出现偶尔的并发问题
不适合放入二级缓存中的数据:
经常被修改
财务数据,绝对不允许出现并发问题
与其他应用数据共享的数据
2.7、提供商(第三方实现)
3、二级缓存配置(要掌握)
3.1、步骤
1.导入jar包
2.开启二级缓存
3.确定提供商
4.确定需要缓存内容
5.第三方配置文件
3.2、导入jar包
核心:
ehcache-1.5.0.jar
依赖:
backport-util-concurrent-2.1.jar
commons-logging-1.1.1.jar
开启二级缓存
hibernate.cache.use_second_level_cache = true
二级缓存提供商
hibernate.cache.provider_class = org.hibernate.cache.EhCacheProvider