Hibernate一级缓存(补)
------------------siwuxie095
什么是缓存
缓存是介于应用程序和永久性数据存储源(如:硬盘上的文件
或
数据库)
之间,其作用是降低应用程序直接读写永久性数据存储源的频率,从而提
高应用的运行性能
针对数据库,则:
数据是存到数据库中的,而数据库本身也是文件系统,使用流方式操作文
件的效率并不是很高
如果把数据存到内存里面,不需要使用流方式,就可以直接读取内存中的
数据,提高读取的效率
Hibernate 缓存
1、Hibernate 框架中提供了很多优化方式,Hibernate 缓存正是其中之一
2、Hibernate 缓存的特点
(1)第一类:Hibernate 的一级缓存
1)Hibernate 的一级缓存默认是打开的
2)Hibernate 的一级缓存使用范围是 Session 的范围,即 从 Session 创建到 Session 关闭
3)Hibernate 的一级缓存中存储的数据必须是持久态数据
(2)第二类:Hibernate 的二级缓存
1)Hibernate 的二级缓存目前已经不使用了,替代技术:Redis
2)Hibernate 的二级缓存默认是关闭的,需要进行配置
3)Hibernate 的二级缓存使用范围是 SessionFactory 的范围
验证
Hibernate 一级缓存的存在
1、验证方式
(1)先根据
uid=1 进行查询,返回实体类对象
(2)再根据
uid=1 进行查询,返回实体类对象

运行一览:

第一次执行
get 方法之后,发送 sql 语句,查询数据库
第二次执行
get 方法之后,没有发送 sql 语句,查询一级缓存
Hibernate 一级缓存执行过程

Hibernate 一级缓存特性
1、持久态对象能够自动更新数据库

2、执行过程


补:这篇文章本应该在 实体类对象的三种状态 和 Hibernate
事务代码规范写法 之间(分类:Hibernate)
【made by siwuxie095】
Hibernate一级缓存(补)的更多相关文章
- hibernate一级缓存
理解 Hibernate 一级缓存 Hibernate 一级缓存默认是打开,不需要任何的配置.实际上,你无法强制禁止它的使用. 如果你理解了一级缓存实际上和会话是关联的,就很容易理解一级缓存.总所周知 ...
- Hibernate一级缓存(基于查询分析)
首先我们应该弄清什么是hibernate缓存:hibernate缓存是指为了降低应用程序对物理数据源的访问频次,从而提高应用程序的运行性能的一种策略.我们要将这个跟计算机内存或者cpu的缓存区分开. ...
- hibernate一级缓存及对象的状态
hibernate中实体类对象的状态 在hibernate中实体类对象有三种状态 (1)瞬时态(临时态) 瞬时态:即我们自己创建一个对象,还没有保存到数据库就叫临时态,其实也可以说是对像没有id值,跟 ...
- Hibernate一级缓存测试分析
Hibernate 一级缓存测试分析 Hibernate的一级缓存就是指Session缓存,此Session非http的session会话技术,可以理解为JDBC的Connection,连接会话,Se ...
- 转载 hibernate一级缓存和二级缓存的区别
文章来源:http://blog.csdn.net/defonds/article/details/2308972 hibernate一级缓存和二级缓存的区别 缓存是介于应用程序和物理数据源之 ...
- Hibernate一级缓存和三种状态
Hibernate一级缓存又称session缓存,生命周期很短,跟session生命周期相同. 三种状态:1.transient(瞬时态):刚new出来的对象,既不在数据库中,也不在session管理 ...
- hibernate一级缓存的源码初窥
hibernate的一级缓存的存在使得hibernate可以在操作实体化对象的时候减少对于数据库的访问.hibernate的一级缓存实际上就是指的session缓存,它的生命周期和session相同. ...
- Hibernate 一级缓存的陷阱
最近公司的应用经常报OOM,一开始我以为是公司业务数据太多,导致内存不够,所以只是简单的把容器的内存加大.撑了几天后这个错仍然被报出来.后来我仔 细分析过项目代码后,没有发现有任何引起内存泄漏的地方. ...
- Hibernate <一级缓存>
Hibernate缓存分为三级: 一级缓存:基于事务级别(内存)的缓存,也可以成为session级别缓存 二级缓存:依赖于第三方,当请求一个对象时,先在缓存里面查找,如果没有就执行查询语句 查询缓存: ...
随机推荐
- Linux设置history命令显示时间
效果如图: 设置方法如下: vim /etc/bashrc #command-->history set HISTFILESIZE=2000 #保存命令的总数默认总数为1000 HISTSIZE ...
- 1117 Eddington Number (25 分)
1117 Eddington Number (25 分) British astronomer Eddington liked to ride a bike. It is said that in o ...
- 1019 General Palindromic Number (20 分)
1019 General Palindromic Number (20 分) A number that will be the same when it is written forwards or ...
- SVM的sklearn.svm.SVC实现与类参数
SVC继承了父类BaseSVC SVC类主要方法: ★__init__() 主要参数: C: float参数 默认值为1.0 错误项的惩罚系数.C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确 ...
- 笔记本电脑安装centos 7(转)
1. 下载 CentOS 镜像 下载地址 : https://wiki.centos.org/Download, 我下载的是1406 2. 使用 UltraISo 将镜像刻录到U盘 UltraISo ...
- nginx-1.8.1的安装
1.我直接切换到root用户下安装,这里需要三个插件一起配套使用的 分别是: 1.gzip 模块需要 zlib 库 ( 下载: http://www.zlib.NET/ )2.rewrite 模块需要 ...
- Erasure Coding(纠删码)深入分析
http://blog.sina.com.cn/s/blog_57f61b490102viq9.html 1.前言 Swift升级到2.0大版本后宣称开始支持纠删码,这其实是一个很有意义的特性,主要是 ...
- java内存模型(二)深入理解java内存模型的系列好文
深入理解java内存模型(一)--基础 深入理解java内存模型(二)--重排序 深入理解java内存模型(三)--顺序一致性 深入理解java内存模型(四)--volatile 深入理解java内存 ...
- 通过cookie验证用户登录
# cookie # cookie# 当你在浏览器登陆时,浏览器记录这个登录信息(服务器响应时发送请求的数据和登录信息),再次访问时 浏览器会将访问请求和缓存的登录信息都发送到服务器, # 服务器通过 ...
- linux 下创建文本的方法
1. 打开终端,输入 vi 1.txt 输入:wq 文本创建成功 2. 打开终端,输入 vim 1.txt 输入:wq 文本创建成功 3. 打开终端 , 输入 touch 1.txt ...