Hibernate二级缓存
何为Hibernate 的缓存
- 缓存(Cache): 计算机领域非常通用的概念。它介于应用程序和永久性数据源(硬盘上的文件或者数据库)之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提高应用的运行速度,缓存中的数据是数据存储源中数据的拷贝。缓存的物理介质通常是内存。
- Hibernate中提供了两个级别的缓存
- 第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存,这一级别的缓存是由Hibernate管理的
- 第二级别的缓存是SessionFactroy级别的缓存,它是属于进程范围的缓存,SessionFactory 级别的缓存又可以分为两类:
- 内置缓存:Hibernate 自带的缓存,不可卸载,通常在Hibernate的初始化阶段, Hibernate 会把映射元数据和预定义的SQL 语句放到SessionFactroy 缓存中,映射元数据是映射元数据(.hbl.xml文件中的数据)的复制。该内置缓存是只读的。
- 外置缓存(二级缓存):一个可配置的缓存插件。在默认情况下SessionFactroy 不会启用这个缓存插件,外置缓存是数据库中的数据的复制,外置缓存的物理介质可以是内存或者硬盘。
如何使用Hibernate 的二级缓存
- 适合放入二级缓存中数据:
- 很少被使用的
- 不是很重要的数据,允许偶尔出现并发问题的数据(因为是缓存,所以里面存的可能不是最新的)
- 不适合放入二级缓存中的数据:
- 经常被修改的数据
- 财务数据,绝对不允许出出现并发问题的数据
- 与其他应用程序共享的数据
Hibernate 二级缓存的架构
Hibernate 二级缓存的并发访问策略
管理Hibernate 二级缓存