Hibernate学习笔记 -- day05 缓存、快照机制、对象状态
来源:互联网 发布:mac怎么拷贝到移动硬盘 编辑:程序博客网 时间:2024/06/02 05:56
一、Hibernate的一级缓存
1、缓存的概念:
内存中的临时数据
2、使用缓存的好处:
可以减少和数据库的交互次数,在需要使用数据时,先去缓存中看看有没有,有就直接用,没有,再去查询数据库。
3、什么样的数据适用缓存:
经常查询,不经常修改的数据
数据的对错,对最终结果影响不大的
4、证明hibernate一级缓存存在
/** * 证明一级缓存确实存在 * * 明确: * 一级缓存指的是Session对象的缓存 * * 一级缓存指的就是Session对象中定义的一些集合。 */@Testpublic void test1(){Session s = HibernateUtil.openSession();Transaction tx = s.beginTransaction();//首次查询Customer c = s.get(Customer.class, 1L);//此时会去数据库中查询,把查询出来对象存入了一级缓存System.out.println(c);//输出//再次查询Customer c2 = s.get(Customer.class, 1L);//没有去查询,拿1L去一级缓存中查找,找到后就返回了。System.out.println(c2);//输出tx.commit();s.close();//一级缓存就消失了}
5、缓存机制的简单图解
二、Hibernate的快照机制
1、什么是快照机制
它的作用就是,用于缓存数据和数据库进行同步。保证数据一致。
为了减少和数据库交互的次数,从而对一级缓存对象进行了拷贝。
2、快照机制的代码体现
/** * 快照机制 * 它的作用就是,用于缓存数据和数据库进行同步。保证数据一致。 * 为了减少和数据库交互的次数,从而对一级缓存对象进行了拷贝。 */@Testpublic void test2(){Session s = HibernateUtil.openSession();Transaction tx = s.beginTransaction();//根据id查询一个对象Customer c = s.get(Customer.class, 1L);//会去查询,还会存入一级缓存System.out.println(c.getCustName());//TBD云集中心//修改客户名称c.setCustName("黑马程序员");System.out.println(c.getCustName());//黑马程序员tx.commit();s.close();//到此行的时候客户对象还能不能用?可以使用System.out.println(c.getCustName());//TBD云集中心 | 黑马程序员}
3、快照机制的分析图解
三、Hibernate的对象状态
1、三种状态
瞬时态:没有OID,和session没有关系。多见于new出的对象
持久化状态:有OID,和session有关系。多见于从数据库中查询出来的对象
脱管状态:有OID,和session没有状态。
2、三种状态互相转换的图解
阅读全文
0 0
- Hibernate学习笔记 -- day05 缓存、快照机制、对象状态
- Hibernate缓存机制之快照
- Hibernate缓存机制之快照
- Hibernate一级缓存-快照机制
- Hibernate缓存机制学习笔记
- Hibernate对象状态、缓存、快照、hql语句、criteria语句、sql语句
- hibernate缓存机制(学习笔记)
- Hibernate缓存机制笔记
- Hibernate学习笔记之----理解对象的持久性与一级缓存机制
- hibernate 之 对象状态/缓存
- Hibernate学习---缓存机制
- Hibernate学习(三):Session的缓存及对象的状态
- Hibernate学习(三):Session的缓存及对象的状态
- Hibernate学习笔记—Hibernate对象的三种状态
- C++ 学习笔记 day05
- mysql 学习笔记 day05
- Oracle学习笔记--day05
- Python学习笔记day05
- new,delete运算符重载
- 基本类型和引用类型的值
- Android Studio中Git的使用(一)
- 容灾与备份的区别,以及容灾和非容灾一些名词的解释
- Hyperledger Fabric 背书策略
- Hibernate学习笔记 -- day05 缓存、快照机制、对象状态
- ubuntu系统下搭建git服务器
- R语言--异常值检测
- oracle的三种启动状态
- 杭电oj1008电梯
- CSS3学习笔记
- 通过实现HandlerMethodArgumentResolver接口,给springMvc的Controller的方法注入自定义参数
- Hibernate学习笔记 -- day06 连接池及绑定本地线程
- Java中的动态代理