hibernate一级缓存

本文深入探讨了缓存的概念及其在提升数据读取效率方面的作用,特别关注于Hibernate框架中的缓存机制。详细介绍了Hibernate的一级和二级缓存特性,以及如何通过缓存避免重复查询数据库,提高应用程序性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是缓存?

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范围.

验证一级缓存存在:

1.验证方式:

(1)首先根据uid=1查询, 返回对象

(2)其次再根据uid=1查询, 返回对象

//1.根据uid=1查询
			//执行了第一个get方法后是否会查询数据库, 是否发送sql语句
			User user1 = session.get(User.class, 1);
			System.out.println(user1);
			//2.再根据uid=1查询
			////执行了第二个get方法后是否会查询数据库, 是否发送sql语句
			User user2 = session.get(User.class, 1);
			System.out.println(user2);
/*
		结果:
			Hibernate: 
			    select
			        user0_.uid as uid1_0_0_,
			        user0_.username as username2_0_0_,
			        user0_.password as password3_0_0_,
			        user0_.address as address4_0_0_ 
			    from
			        t_user user0_ 
			    where
			        user0_.uid=?
				User [uid=1, username=小王, password=6666, address=日本]
				User [uid=1, username=小王, password=6666, address=日本]
*/

结论:

第一次执行了get方法之后, 发送sql语句查询数据库

第二次执行get方法之后,没有发送sql语句查询数据库

关于hibernate的相关笔记:

链接:https://pan.baidu.com/s/1swp5FFIHcUdy7WAwc7krzQ 密码:bklj

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值