08.Hibernate的一级缓存-->>Session
2024-10-07 23:39:56
Hibernate提供了两种缓存:
- 1.一级缓存:自带的不可卸载的,一级缓存的生命周期与Session一致,一级缓存成为Session级别的缓存
- 2.二级缓存:默认没有开启,需要手动配置才可以使用,二级缓存可以在多个Session中共享数据,二级缓存成为SessionFactory级别的缓存
Sesison对象的缓存概述:
- 1.将对象存入到一级缓存中,session生命周期没有结束,那么对象在session中存放着
- 2.内存中包含session的实例--->>>session的缓存(一些集合)--->>>集合包含的是缓存对象!
证明一级缓存的存在:
在同一个Session中两次查询,查看执行了哪些SQL语句
@Test
public void m01(){
Session session = HibernateUtils.openSession();
Transaction tr = session.beginTransaction(); User user1 = session.get(User.class, 1L);
System.out.println("-------------------------------");
User user2 = session.get(User.class, 1L); tr.commit();
session.close(); }
控制台显示:
只执行了一次查询语句,说明第一次查询之后 Hibernate将持久化对象存储在session中,再次执行就不用去数据库查询
Hibernate如何做到数据库与session进行同步更新操作
使用get()查询到一个User对象,然后设置user的一个属性,commit。
发现数据库中的该user属性也变化了(没有做update操作)
快照机制
@Test
public void m02(){
Session session = HibernateUtils.openSession();
Transaction tr = session.beginTransaction(); User user = session.get(User.class, 3L);
user.setAge(1); tr.commit();
session.close(); }
数据库变化:
===>>>
证明了快照的存在
session的一些方法
- session.clear(); --清空缓存
- session.evict(obj); --从缓存中清除指定对象
- session.flush(); --刷出缓存(在不commit得情况下和数据库同步)
最新文章
- 7 COMPELLING REASONS YOU NEED TO START THE BUSINESS YOU’VE ALWAYS WANTED
- Ruby:字符串处理函数
- 在线程中调用SaveFileDialog
- Oracle10g RAC的简单操作
- WinForm 批量设置指定控件中的控件状态
- 01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件
- UVAlive7141 BombX 14年上海区域赛D题 线段树+离散化
- echarts实现上海地域PM值(map、timeline)
- Linux进程和线程的比較
- SpringMVC提交数据遭遇基础类型和日期类型报400错误解决方法
- ASP.NET遇到HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
- Identity Server 4 预备知识 -- OAuth 2.0 简介
- java字符串对象存储机制
- Docker(二):Registry 镜像仓库
- 从 Firefox 35 版本开始,就无法兼容 PAC 式代理
- vcpkg-微软开发的VC++打包工具
- Linux下安装MySQL以及一些小坑
- MAC CURL : Error:35 SSL certificate problem: Couldn't understand the server certificate format
- 一个带bash,带glibc,中国时区,非root用户可运行crond命令的基于alpine镜像的Dockerfile
- 1025 PAT Ranking (25)(25 point(s))
热门文章
- css---5 only-child or nth-of-type
- Git中.gitignore忽略规则
- windows安装vscode,配置golang环境
- 《DSP using MATLAB》Problem 8.40
- vue表格之:summary-method=";getSummaries";与show-summary(列求和)
- CSS清除默认边距
- JS规则 我与你同在(逻辑与操作符)数学中的“b大于a,b小于c”是“a<;b<;c”,那么在JavaScript中可以用&;&;表示
- Python全栈开发:configparser模块
- 区间dp——cf1025D二叉搜索树的中序遍历好题!
- Clion IDE的安装