二级缓存区:类缓存区,集合缓存区,更新时间戳区.

它会记录一个时间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二级缓存:更新时间戳区的更多相关文章

  1. Hibernate ——二级缓存

    一.Hibernate 二级缓存 1.Hibernate 二级缓存是 SessionFactory 级别的缓存. 2.二级缓存分为两类: (1)Hibernate内置二级缓存 (2)外置缓存,可配置的 ...

  2. Hibernate 二级缓存 总结整理(转)

    和<Hibernate 关系映射 收集.总结整理> 一样,本篇文章也是我很早之前收集.总结整理的,在此也发上来 希望对大家有用.因为是很早之前写的,不当之处请指正. 1.缓存:缓存是什么, ...

  3. ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存

    ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate  : Hibernate是一个持久层框架,经常访问物理数据库 ...

  4. js相关(easyUI),触发器,ant,jbpm,hibernate二级缓存ehcache,Javamail,Lucene,jqplot,WebService,regex,struts2,oracle表空间

    *********************************************js相关********************************************* // 在指 ...

  5. hibernate二级缓存ehcache hibernate配置详解

    <!-----------------hibernate二级缓存ehcache------------------------->hibernate配置 <prop key=&quo ...

  6. 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法

    配置Hibernate 二级缓存时,出现以下bug提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&quo ...

  7. 配置Hibernate二级缓存步骤

    配置Hibernate二级缓存步骤: 加入二级缓存的jar包及配置文件 jar包位置:hibernate-release-4.1.8.Final\lib\optional\ehcache下所有jar包 ...

  8. Hibernate(十六):Hibernate二级缓存

    Hibernate缓存 缓存(Cache):计算机领域非常通用的概念.它介于应用程序和永久性数据存储源(如磁盘上的文件或者数据库)之间,起作用是降低应用程序直接读取永久性数据存储源的频率,从而提高应用 ...

  9. hibernate二级缓存demo2

    @Test public void hello3(){ Session session=sessionFactory.openSession(); List list = session.create ...

随机推荐

  1. 洛谷P1640 【SCOI2010】连续攻击游戏

    原题传送门 题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示.当他使用某种装备时,他只能使用该装备的某一个属性. ...

  2. Hystrix容错处理

    如果服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直接提供者响应或超时.在高负载场景下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃.这时,就需要进行容 ...

  3. linux socket error code

    errno.00 is: Successerrno.01 is: Operation not permittederrno.02 is: No such file or directoryerrno. ...

  4. Vuejs之Component slot 插槽详解

    Vuejs的component的数据进行了沙箱隔离,除js全局变量如Math, Date之类外无法访问用户自定义的变量,所以使用component写组件或嵌套组件时明白变量的访问非常重要 编译作用域 ...

  5. 使用 jQuery 设置 disabled 属性与移除 disabled 属性

    表单中readOnly和disabled的区别:Readonly只针对input(text/ password)和textarea有效,而disabled对于所有的表单元素都有效,包括select,r ...

  6. Leetcode152. Maximum Product Subarray乘积的最大子序列

    给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示例 2 ...

  7. Leetcode319. Bulb Switcher灯泡开关

    初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡你关闭一次. 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 i 个灯泡切换一次 ...

  8. Windows API 23 篇 WTSQuerySessionInformation

    函数原型:BOOLWINAPIWTSQuerySessionInformationW(                                                      IN ...

  9. Ubuntu时间管理方法

    1. date 命令主要用于显示以及修改系统时间 2. hwclock 命令用于查看设置硬件时间,以及同步硬件时间与系统时间 # 显示硬件时间hwclock # 设置硬件时间hwclock -set ...

  10. leetcode算法题笔记|Reverse Integer

    /** * @param {number} x * @return {number} */ var reverse = function(x) { var s; if(x<0){ s=-x; } ...