什么是缓存?
并不是指计算机的内存或者CPU的一二级缓存
缓存是指为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能的一种策略.
简单说:就是如何更快的检索数据库 查到想要的数据的策略
为了提高效率而存在的
对物理数据源的复制 复制到内存中
图1
未命中的话 会复制进去
一、介绍一级缓存:
1.Hibernate一级缓存又称为"Session缓存","会话级缓存"
2.通过Session从数据库查询实体时把实体在内存中存储起来,下一次查询同一实体时不再从数据库获取,而是从内存中获取,这就是缓存
3.一级缓存的生命周期和Session相同;Session销毁,他也销毁
4.一级缓存中的数据可适用范围在当前会话之内
二、Hibernate一级缓存API:
一级缓存是Hibernate的默认缓存,无法取消,用两个方法管理:
1、evict():用于将某个对象从Session的一级缓存中清除。
2、clear():用于将一级缓存中的所有对象全部清除。
Ps:一级缓存也有些时候会对程序的性能产生影响。
数据库准备
方法一
结果
结论
第二个案例有点特殊
新工具类
方法2
方法3
方法4
// HQL查询后,查询结果会进入一级缓存中 但是查询不会使用一级缓存
// criteria=>会将查询结果放入缓存 查询也不会使用一级缓存 与HQL一致
}
// sql查询时,如果把查询结果封装到对象中,对象会放入一级缓存中