day37 02-Hibernate二级缓存:二级缓存的散装数据
一级缓存存放的是对象的地址。把对象的地址缓存下来了。二级缓存里面存放的是对象的散装数据。你再去获取的时候,因为一级缓存的生命周期结束了,它会从二级缓存中获取。从二级缓存中获取,因为它又会得到一个对象。它会把二级缓存中的散装数据拿出来重新组装成一个Customer对象。它相当于是这里又Custoerm c2 = new Customer();然后又调用c2.setCid(),c2.setCname(),c2.setAge()把id,name和age装进来。所以customer3和customer1得出来的地址肯定不一样嘛。因为customer3是一个新的对象了,跟custoemr1对象的地址又不一样了。所以二级缓存里面缓存的是对象的散装数据。

@SuppressWarnings("unused")
@Test
// 配置二级缓存的情况
public void demo2(){
Session session = HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction();
Customer customer1 = (Customer) session.get(Customer.class, 1);// 发送SQL.
Customer customer2 = (Customer) session.get(Customer.class, 1);// 不发送SQL.
System.out.println(customer1 == customer2);
tx.commit();//
session = HibernateUtils.getCurrentSession();
tx = session.beginTransaction();
Customer customer3 = (Customer) session.get(Customer.class, 1);// 不发送SQL. 虽然是从二级缓存里获取的一个数据同时它也会往一级缓存里面放
//因为上一个一级缓存已经结束了,这是另一个session的一级缓存了。所以customer4肯定是从一级缓存获取的
Customer customer4 = (Customer) session.get(Customer.class, 1);// 不发送SQL.
System.out.println(customer3 == customer4);//customer3和customer4肯定也是一样的
System.out.println(customer1 == customer3);//Customer对象肯定是在二级缓存的类缓冲区里面的 那么二级缓存的类缓冲区是一个什么特点呢?二级缓存的类缓冲区卡里面存储的数据是
//对象的散装数据
tx.commit();
}
@SuppressWarnings("unused")
@Test
// 没有配置二级缓存的情况
public void demo1(){
Session session = HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction();
Customer customer1 = (Customer) session.get(Customer.class, 1);// 发送SQL.
Customer customer2 = (Customer) session.get(Customer.class, 1);// 不发送SQL.
//一级缓存缓存的是对象的地址,cutoemr1和customer2指向的都是同一个地址
System.out.println(customer1==customer2);
tx.commit();
session = HibernateUtils.getCurrentSession();
tx = session.beginTransaction();
Customer customer3 = (Customer) session.get(Customer.class, 1);// 发送SQL.
tx.commit();
}
}
day37 02-Hibernate二级缓存:二级缓存的散装数据的更多相关文章
- hibernate 5的二级缓存案例讲解
hibernate 5的二级缓存案例讲解 本帖最后由 鱼丸儿 于 2018-1-20 11:44 编辑 大家好,今天来记录讲解一下磕磕绊绊的hibernate5 的二级缓存配置,一条路摸到黑 那么在这 ...
- Hibernate-ORM:16.Hibernate中的二级缓存Ehcache的配置
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 本篇博客讲述Hibernate中的二级缓存的配置,作者将使用的是ehcache缓存 一,目录 1.二级缓存的具 ...
- Hibernate的一级二级缓存机制配置与测试
特别感谢http://www.cnblogs.com/xiaoluo501395377/p/3377604.html 在本篇随笔里将会分析一下hibernate的缓存机制,包括一级缓存(session ...
- Hibernate中的一级缓存、二级缓存和懒加载(转)
1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...
- Hibernate中的一级缓存、二级缓存和懒加载
1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...
- hibernate 查询、二级缓存、连接池
hibernate 查询.二级缓存.连接池 查询: 1) 主键查询 Dept dept = (Dept) session.get(Dept.class, 12); Dept dept = (Dep ...
- 一级缓存二级缓存(hibernate)
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事 ...
- Hibernate 再接触 一级缓存 二级缓存 查询缓存
缓存 就是把本来应该放在硬盘里的东西放在内存里 将来存内存里读 一级缓存: session缓存 二级缓存: sessionFactory级别的 (适合经常访问,数据量有限,改动不大) 很多的se ...
- Hibernate笔记④--一级二级缓存、N+1问题、saveorupdate、实例代码
一级缓存及二级缓存 一级缓存也是Session 缓存 一个链接用户的多次查询使用缓存 跨用户 则无缓存 hibernate自带的 get和load都会填充并利用一级缓存 二级缓 ...
- 说说自己对hibernate一级、二级、查询、缓存的理解。
说说自己对hibernate一级.二级.查询.缓存的理解. 2016-03-14 21:36 421人阅读 评论(0) 收藏 举报 分类: web开发(19) 版权声明:本文为博主原创文章,未经博 ...
随机推荐
- 杂项-公司:SAMSUNG
ylbtech-杂项-公司:SAMSUNG 三星集团是韩国最大的跨国企业集团,同时也是上市企业全球500强,三星集团包括众多的国际下属企业,旗下子公司有:三星电子.三星物产.三星航空.三星人寿保险等, ...
- 关于Collection接口和Map
Iterable才是Collection的父接口.不是Iterator. Map,SortedMap属于接口类型,不可以new的方式创建对象. HashMap基于哈希表实现Map接口的类,并允许nul ...
- 《DSP using MATLAB》Problem 7.37
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- matlab-选择-循环-函数
1 选择 3 循环 break 3 函数
- 2018-12-6-Roslyn-如何基于-Microsoft.NET.Sdk-制作源代码包
title author date CreateTime categories Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 lindexi 2018-12-06 16:2 ...
- Activiti 使用小结
自定义表单类型 使用动态表单,需要定义表单的字段以及属性,在WEB流程设计器中没有Default字段(Eclipse中有),给设计带来了一定的困难,下面介绍如何在WEB流程设计器中扩展表单. 首先在s ...
- HZOI20190813 B,任(duty)
题面:去一个神奇的网页:https://www.cnblogs.com/Juve/articles/11352426.html 听说打O(nmq)有70 但是显然博主只有50分 考点:前缀和的综合应用 ...
- Django项目:CMDB(服务器硬件资产自动采集系统)--01--01CMDB获取服务器基本信息
AutoClient #settings.py # ————————01CMDB获取服务器基本信息———————— import os BASEDIR = os.path.dirname(os.pat ...
- 19-10-17-T
真的T了.(滑稽 Final 35 Miemeng 100 03:12:51 0 03:12:54 15 03:12:55 115 03:12:55 幸好$T1$还能要,不然就…… 前言 中午$\sc ...
- 你所不知道的Mac截图的强大
Mac的截图功能扩展功能很强大的,不要用QQ那个COM+Ctrl+A弱爆了的截图了~ 首先说一下两种截图 1.Command+shift+3:全屏截图,保存截图到桌面 2.Command+shift+ ...