- hibernate的一级缓存
1.什么是缓存?
(1)数据存到数据库里面,数据库本身是文件系统,使用流方式操作文件效率并不是很高
把数据存到内存里面,不需要使用流方式,可以直接读取内存中数据
把数据放到内存中,提高读取效率
2.hibernate缓存
(1)hibernate框架提供很多优化方式,hibernate的缓存就是一种优化
(2)hibernate缓存特点:
第一类:hibernate一级缓存
1).hibernate的一级缓存默认就是打开的
2).hibernate的一级缓存使用范围,是session范围,从session创建到session关闭范围
3).hibernate的一级缓存中,存储数据必须是持久态
第二类:hibernate的二级缓存
1)目前已经不适用了,替代技术redis
2)二级缓存默认不是打开的,需要配置
3)二级缓存的使用缓存,是sessionfactory范围
3.验证一级缓存存在
(1)验证方式
1)首先根据uid=4028802e5c8bb437015c8bb43a350000查询,返回对象
2)再根据uid=4028802e5c8bb437015c8bb43a350000查询,返回对象
//1.根据id查询
//执行第一个get方法是否会查询数据库,是否发送sql语句
User user1 = session.get(User.class, "4028802e5c8bb437015c8bb43a350000");
System.out.println(user1);
//2.根据id查询
User user2 = session.get(User.class, "4028802e5c8bb437015c8bb43a350000");
System.out.println(user1);
第一次执行get方法,会发送sql语句查询对象,第二次执行get方法,不会发送sql语句查询一级缓存内容
4.hibernate一级缓存执行过程
5.hibernate一级缓存特性
//4.修改操作
//4.1根据id查询
User user = session.get(User.class, "4028802e5c8bb437015c8bb43a350000");
//4.2向返回的对象里面设置修改之后的值
user.setS_username("lucy");
1)执行过程(在提交事务时更新)