day37 06-Hibernate二级缓存:更新时间戳区
二级缓存区:类缓存区,集合缓存区,更新时间戳区.
它会记录一个时间T1.其实在我们查询之后它会记录一个时间.假设时间叫做T1.就是你查询完之后的当前时间是T1.当我们自己手动在下面做了一个更新之后,它会在更新时间戳的区域中去记录一个你更新这条记录的时间T2.
另开一个事务,又要去做查询了,从我们二级缓存中去获取数据.一获取数据的时候它就会先比对这个时间戳.如果T2>T1,说明你是先查询后更新.如果是后更新的话,那我的数据就不是最新的了.如果不是最新的它强制地又发送了一个SQL语句查询我们最新的记录.为了找到最新的记录,它就这样去做了.这其实就是它的更新时间戳区域,就记一时间戳.
@SuppressWarnings("unused")
@Test
// 更新时间戳
public void demo8(){
Session session = HibernateUtils.getCurrentSession();
Transaction tx = session.beginTransaction(); Customer customer = (Customer) session.get(Customer.class, 2);
//customer.setCname("xx");//不能这样做,因为一级缓存区的更新自动同步到二级缓存
session.createQuery("update Customer set cname = '奶茶' where cid = 2").executeUpdate();//调用executeUpdate()才可以执行更新
//但是这种不建议你去使用.那我们为什么这样去玩呢?因为你这样去玩二级缓存它不知道啊。你采用这种方式二级缓存不知道你在做更新.要是你采用set属性值那种方式更新
//二级缓存那边就同步了
//hql主要是用来查询,如果你想用它来做修改的话也是可以的,包括插入删除.
tx.commit(); session = HibernateUtils.getCurrentSession();
tx = session.beginTransaction(); Customer customer2 = (Customer) session.get(Customer.class, 2);//这边得到的数据是新的吗?得到的是美眉还是奶茶啊?
//如果没有执行上面的update语句进行更新这里就不会发SQL.这里又发SQL查了一遍.那它怎么知道这里面是更新过的记录呢?这就跟更新时间戳区有关.
//
tx.commit();
}
day37 06-Hibernate二级缓存:更新时间戳区的更多相关文章
- Hibernate ——二级缓存
一.Hibernate 二级缓存 1.Hibernate 二级缓存是 SessionFactory 级别的缓存. 2.二级缓存分为两类: (1)Hibernate内置二级缓存 (2)外置缓存,可配置的 ...
- Hibernate 二级缓存 总结整理(转)
和<Hibernate 关系映射 收集.总结整理> 一样,本篇文章也是我很早之前收集.总结整理的,在此也发上来 希望对大家有用.因为是很早之前写的,不当之处请指正. 1.缓存:缓存是什么, ...
- ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存
ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate : Hibernate是一个持久层框架,经常访问物理数据库 ...
- js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间
*********************************************js相关********************************************* // 在指 ...
- hibernate二级缓存ehcache hibernate配置详解
<!-----------------hibernate二级缓存ehcache------------------------->hibernate配置 <prop key=&quo ...
- 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法
配置Hibernate 二级缓存时,出现以下bug提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&quo ...
- 配置Hibernate二级缓存步骤
配置Hibernate二级缓存步骤: 加入二级缓存的jar包及配置文件 jar包位置:hibernate-release-4.1.8.Final\lib\optional\ehcache下所有jar包 ...
- Hibernate(十六):Hibernate二级缓存
Hibernate缓存 缓存(Cache):计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如磁盘上的文件或者数据库)之间,起作用是降低应用程序直接读取永久性数据存储源的频率,从而提高应用 ...
- hibernate二级缓存demo2
@Test public void hello3(){ Session session=sessionFactory.openSession(); List list = session.create ...
随机推荐
- mysql localhost可以连输入本机ip地址连接不了
Mysql 默认是没有开启这个权限的(只允许使用 host:localhost,或者 host:127.0.0.1),如果想用 host:192.168.1.* ,来访问mysql ,需要手动开启这个 ...
- php数据结构课程---6、常见排序有哪些
php数据结构课程---6.常见排序有哪些 一.总结 一句话总结: 冒泡排序(Bubble sort):依次交换 选择排序 ( Selection Sort ):在未排序序列中找到最小(大)元素,依次 ...
- Python网络爬虫之三种数据解析方式 (xpath, 正则, bs4)
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
- 数据库insert和update
1.当使用insert时不能使用where id=?,这是要使用update语句 2.只对一些列插入数据或者更新数据: insert是: insert tb(column1,column2..)val ...
- JS基础语法之DOM02(事件)
1.常用事件 1.onclick 单击 应用场景:为按钮绑定 2.ondbclick 双击 3.onfocus 获得焦点 4.onblur 失去焦点 应用场景:用于表单验证,用户离开某个输入框时, ...
- RQNOJ--160 竞赛真理(01背包)
题目http://www.rqnoj.cn/problem/160 分析:这是一个01背包问题,对于每一道题目,都有两个选择"做"或者"不做". 但是唯一不同的 ...
- 详解position定位与定位应用
定位一直是WEB标准应用中的难点,如果理不清楚定位那么可能应实现的效果实现不了,实现了的效果可能会走样.如果理清了定位的原理,那定位会让网页实现的更加完美. 定位的定义: 在CSS中关于 ...
- elasticsearch river 从数据库中导入数据
Elasticsearch中使用reiver-jdbc导入数据 2014-05-13 15:10 本站整理 浏览(3384) Elasticsearch中使用reiver-jdbc导入数据,有 ...
- [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】
Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...
- Windows API 第20篇 SetVolumeMountPoint 设置卷挂载点参数错误
函数原型:BOOL SetVolumeMountPoint( IN LPCTSTR lpszVo ...