hibernate中的三级缓存与加载
来源:互联网 发布:软件打不开是什么原因 编辑:程序博客网 时间:2024/06/05 03:33
首先说JCS;
JCS:指的是java cache system
JCS中是依据对象中的唯一标示进行存储 存储结构为map结构
为什么要说JCS呢,因为hibernate的缓存二级缓存与JCS密切相关,
1.什么是三级缓存呢?
一级缓存:指的是Session缓存,基于线程的缓存
二级缓存 指的是SessionFactory的缓存,是基于进程的缓存 (由于SessionFactory的声明周期和程序的声明周期是相同的,并且是单例的)
二级缓存又分为内置缓存和外置缓存
内置缓存是hibernate中自己编写的
外置缓存是hibernate借助第三方插件的缓存
外置缓存又分为class缓存和查询缓存
这两种缓存都采用的是map结构,前者的key保存的是sql语句的字符串,value保存的是主键id的集合
后者的key保存的是id,value保存的是id所对应的某一条记录封装后的对象
三级缓存 :指的是外置缓存中的查询缓存
由于查询缓存依赖于class缓存,所以说三级缓存是基于二级缓存之上的.
好吧,讲了这么多,缓存相信也讲的很明了了吧,接下来说说数据的加载吧,数据的加载与缓存有关系的,所以先讲述了三级缓存机制
加载机制分为两类:
一,即时加载 ,
list方法:发送sql语句,将会返回所有相关的数据,并进行缓存
get方法,利用对象的id,然后去一级缓存中找,如果有返回,否则去二级缓存中找,如果有返回,否则直接去数据库查找
二. 延时加载(在hibernate中也成为懒加载)
iterator方法发送sql语句,将会返回所记录的id集合,如果需要查看相应的属性值,则回去二级缓存的class缓存中根据id进行查找,如果没有, 才会去数据库中根据id查找
load方法 利用对象的id,然后去一级缓存中找,如果有则返回,如果没有,则不再去二级缓存中寻找,默认有,会返回对象的代理对象,如果查 看对象属性的的话,才去二级缓存查找,如果没有再去根据id进行数据库访问
- hibernate中的三级缓存与加载
- hibernate三级缓存介绍与实践
- Android中的三级缓存解析与实战
- Hibernate三级缓存浅谈
- Hibernate三级缓存
- Hibernate三级缓存
- Android中的三级缓存
- Android中的三级缓存
- 实现三级缓存加载图片
- hibernate三级缓存(查询缓存)
- Android图片中的三级缓存
- Android图片中的三级缓存
- Android中的图片三级缓存
- Android图片中的三级缓存
- Android图片中的三级缓存
- Android图片中的三级缓存, 为什么要使用三级缓存
- ViewPager,TabLayout与三级缓存
- hibernate一级缓存,二级缓存,三级缓存,缓存算法及配置。
- Linux进程间的通信方式:信号
- mysql分组查询数据,将数据中null和''作为一组查询结果
- 大数据Spark “蘑菇云”行动第64课: 页面跳转功能分析与架构 A、B、C页面之间跳转率的计算方法
- vmware虚拟机上运行ubuntu14开机显示“无法应用原保存的显示器配置”问题的解决办法
- 学习echarts后的一点感悟
- hibernate中的三级缓存与加载
- 带缓存的I/O操作
- 解决用户不在sudoers文件中的问题
- 无中生有之突击NOIP(4)--搜索
- gradle
- Java之类的生命周期
- C语言中处理结构体的原理
- Map集合和Collection集合的区别
- 《Spring in Action》第四版第一章《将Spring付诸实践》读书笔记(二)