Hibernate 中一级缓存和快照区的理解
刚刚开始的时候觉得这个快照区很难理解,在网上看了很多博客之后,开始明白了。我是结合 ADO.NET 理解的,在ADO.NET 中有一个类,
叫 SqlCommandBuilder,在我看来,他就是 ADO.NET 中和 Hibernate 快照区对应的东西,这个 SqlCommandBuilder 可以构建 SQL 语句,并且当调用Update 方法之后,可以将数据库中的信息更新(包括更新和删除),其中还必不可少的一个枚举类,就是行状态位 RowState类,我将这个行状态位和Hibernate 的对比(对比缓存区和快照区)当成对应。只不过,当刷新缓存区时,Hibernate 它做了一个比对缓存区和快照区的内容(如果发现不同,就更新快照区,并存储一条 updata 的 SQL 语句,如果执行的不是刷新操作,而是提交事务操作,那么不仅会存储这个updata语句,还会发送到数据库执行这个updata 的 SQL),而 ADO.NET 没有进行比对,而是进行了记录(即改变了该行的 RowStae 值),最后 SqlCommandBuilder 根据这个状态位和主键,更新到数据库,其实,在某种角度下,比对也是一种做记录(和修改行状态位类似),直到提交事务,就更新到数据库。
加上一句,快照我理解为数据库的快照(最初是数据库某些行的的快照,然后一顿操作,这时就不再是数据库的快照了,但提交事务后,又成了数据库的一部分行的快照了。)
关于SqlCommandBuilder可以看这篇博客【SQLCommandBuilder类】
还有这个类【RowSate类】
也许我讲的不够明白,但是目前的理解就是这样。
Hibernate 中一级缓存和快照区的理解的更多相关文章
- Hibernate的一级缓存:快照区
参考来源:http://blog.sina.com.cn/s/blog_981ee5d80102w85f.html
- JavaWeb_(Hibernate框架)Hibernate中一级缓存
Hibernate中一级缓存 Hibernate 中的缓存分为一级缓存和二级缓存,这两个级别的缓存都位于持久化层,并且存储的都是数据库数据的备份.其中一级缓存是 Hibernate 的内置缓存,在前面 ...
- Hibernate中一级缓存和二级缓存
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能.缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事 ...
- day35-hibernate映射 05-Hibernate的一级缓存:快照区
SessionImpl里面有很多的Java集合,很多java集合才构成了一级缓存.一级缓存里面有一个非常特殊的区域叫做快照区.SessionImpl实现了Session接口,有很多Java集合(包括M ...
- Hibernate中一级缓存和二级缓存使用详解
一.一级缓存二级缓存的概念解释 (1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个 session(一定要同一个ses ...
- Hibernate中一级缓存概念以及flush与clear的区别
Hibernate采用缓存机制提高数据查询效率.缓存分为一级缓存和二级缓存,一级缓存在Session中存在,二级缓存需要手动配置. 在一级缓存中,如果数据保存到数据库中后,而session又没有关闭的 ...
- hibernate一级缓存和快照
摘自网络: Hibernate中的一级缓存的底层是以Map形式存在的,key是主键,value是对象,所以它的泛型为Map<Serializable,Object>,key的泛型为串行化是 ...
- Hibernate的一级缓存
Hibernate的一级缓存 什么是缓存:缓存将数据库/硬盘上文件中数据,放入到缓存中(就是内存中一块空间).当再次使用的使用,可以直接从内存中获取 缓存的好处:提升程序运行的效率.缓存技术是Hibe ...
- (转)Hibernate的一级缓存
http://blog.csdn.net/yerenyuan_pku/article/details/70148567 Hibernate的一级缓存 Hibernate的一级缓存就是指Session缓 ...
随机推荐
- MFC中两个对话框之间数据传递
以下是在网上参考的一篇文章,网址:https://blog.csdn.net/foreverhuylee/article/details/21707197 这里有两种情况, 第一种情况是: (在一个基 ...
- 与Linux的第一次遭遇
我的与linux首次遭遇战 虚拟机安装 安装虚拟机我遇到的问题个数可以缩减到1--我几乎没遇到安装虚拟机的问题!我严格按照老师给的链接去下载那个VirtualBox,尽管那个网页是全英文的,但是我像看 ...
- 20155227 2016-2017-2 《Java程序设计》第二周学习总结
20155227 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习的第三章内容与以前学过的C语言有很多共通的地方,学习起来还是比较快的. 主要的内容有 ...
- 20155320 2016-2017-2《Java程序设计》课程总结
20155320 2016-2017-2<Java程序设计>课程总结 (按顺序)每周作业链接汇总 预备作业1:第一次写随笔,回答了老师的一些问题,写下了期望和目标 预备作业2:总结了一下自 ...
- 在windows上搭建redis集群(redis-cluster)(转载)
一 所需软件:Redis.Ruby语言运行环境.Redis的Ruby驱动redis-xxxx.gem.创建Redis集群的工具redis-trib.rb 二 安装配置redis redis下载地址 ...
- pgpool-II的master-slave模式的分析
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL集群方案相关索引页 回到顶级页面:PostgreSQL索引页 现象描述: 客户来邮件,问:为何Pgpool-II ...
- 【SQLSERVER】索引的维护优化
一.索引的利弊 优点: 1.大大加快数据的检索速度: 2.创建唯一性索引,保证数据库表中每一行数据的唯一性: 3.加速表和表之间的连接: 4.在使用分组和排序子句进行数据检索时,可以显著减少查询中 ...
- Angular ng-include 学习实例
ng-include 可以引入外部的文件到当前视图中.这样可以增强复用性. 最简单的用法 <div ng-include src="'/public/template/tpl.htm ...
- (转) 理解Angular中的$apply()以及$digest()
原文地址:http://blog.csdn.net/dm_vincent/article/details/38705099 $apply()和$digest()在AngularJS中是两个核心概念,但 ...
- linux 冒号用法
冒号在Linux中是一个空命令,可以认为与shell的内建命令true相同,它的返回值是0. 在while循环中 while : 与 while true 的作用是等效的 在 if/then 中可作为 ...