一级缓存的更新会自动同步到二级缓存。

  1. @SuppressWarnings("all")
  2. @Test
  3. // 将内存中的数据写到硬盘
  4. public void demo7(){
  5. Session session = HibernateUtils.getCurrentSession();
  6. Transaction tx = session.beginTransaction();
  7.  
  8. List<Order> list = session.createQuery("from Order").list();//现在是查询所有的订单 一执行createQuery就会往二级缓存里面放但是它不会用
  9. //所以它就会往硬盘上去写了。但是为什么硬盘上c:/ehcache下的数据文件是空的呢?因为程序执行的速度太快了然后就结束了。然后它没来得及往硬盘去写你的程序就结束了。
  10. //加上断点,你给它点空闲的时间。它就会把多余的对象写到硬盘上了。
  11. tx.commit();
  12. }
  1. @Test
  2. // 一级缓存的更新会同步到二级缓存:
  3. public void demo6(){
  4. Session session = HibernateUtils.getCurrentSession();
  5. Transaction tx = session.beginTransaction();
  6.  
  7. Customer customer = (Customer) session.get(Customer.class, 1);//查询一号客户
  8. customer.setCname("芙蓉");//customer.setCname是更新一级缓存,它可以同步到二级缓存.你的一级缓存一更新,它把二级缓存也更新了.
  9.  
  10. tx.commit();
  11.  
  12. session = HibernateUtils.getCurrentSession();
  13. tx = session.beginTransaction();
  14.  
  15. @SuppressWarnings("unused")
  16. Customer customer2 = (Customer) session.get(Customer.class, 1);//是最新的数据呢?还是原来一级缓存中的数据?
  17. //一级缓存的更新会同步到二级缓存.为了保证二级缓存的数据没有问题,它肯定会拿到最新的数据.
  18. tx.commit();
  19. }

  1. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
  2.  
  3. <diskStore path="c:/ehcache"/><!-- 如果你往硬盘上去写,目标硬盘的路径是java.io.tmpdir java.io.tmpdir是系统临时文件存放的路径 -->
  4. <!-- 默认的cache可以对所有的持久化类(在hibernate.cfg.xml里面配置的持久化类) -->
  5. <!-- 假设这里有好几段二级缓存的配置,但是我可能只想用某一个。那就可以通过名字去指定。但是也可以直接使用默认的配置 -->
  6. <!-- 二级缓存也是内存中的一块区域。它能存放多少个对象呢? -->
  7. <!-- maxElementsInMemory最大的元素在内存中的数量,默认是一万个--> <!-- maxElementsInMemory缓存中对象的最大数目 -->
  8. <!-- eternal 设置对象是否是永久的 -->
  9. <!--如果用cache标签就是给它设置一名字 -->
  10. <!-- timeToIdleSeconds 空闲时间 -->
  11. <!-- timeToLiveSeconds 存活的时间 -->
  12. <!-- overflowToDisk 假设maxElementsInMemory="10000",数据库有两万条记录呢 超出内存的区域中是否到硬盘上 是否把你的内存中超出的部分写到硬盘上 超出内存的部分写到硬盘上 如果值为true,可以往硬盘上写了-->
  13.  
  14. <defaultCache
  15. maxElementsInMemory="5"
  16. eternal="false"
  17. timeToIdleSeconds="120"
  18. timeToLiveSeconds="120"
  19. overflowToDisk="true"
  20. maxElementsOnDisk="10000000"
  21. diskPersistent="false"
  22. diskExpiryThreadIntervalSeconds="120"
  23. memoryStoreEvictionPolicy="LRU"
  24. />
  25. </ehcache>
  1. <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
  2.  
  3. <diskStore path="c:/ehcache"/><!-- 如果你往硬盘上去写,目标硬盘的路径是java.io.tmpdir java.io.tmpdir是系统临时文件存放的路径 -->
  4. <!-- 默认的cache可以对所有的持久化类(在hibernate.cfg.xml里面配置的持久化类) -->
  5. <!-- 假设这里有好几段二级缓存的配置,但是我可能只想用某一个。那就可以通过名字去指定。但是也可以直接使用默认的配置 -->
  6. <!-- 二级缓存也是内存中的一块区域。它能存放多少个对象呢? -->
  7. <!-- maxElementsInMemory最大的元素在内存中的数量,默认是一万个--> <!-- maxElementsInMemory缓存中对象的最大数目 -->
  8. <!-- eternal 设置对象是否是永久的 -->
  9. <!--如果用cache标签就是给它设置一名字 -->
  10. <!-- timeToIdleSeconds 空闲时间 -->
  11. <!-- timeToLiveSeconds 存活的时间 -->
  12. <!-- overflowToDisk 假设maxElementsInMemory="10000",数据库有两万条记录呢 超出内存的区域中是否到硬盘上 是否把你的内存中超出的部分写到硬盘上 超出内存的部分写到硬盘上 如果值为true,可以往硬盘上写了-->
  13.  
  14. <defaultCache
  15. maxElementsInMemory="5"
  16. eternal="false"
  17. timeToIdleSeconds="120"
  18. timeToLiveSeconds="120"
  19. overflowToDisk="true"
  20. maxElementsOnDisk="10000000"
  21. diskPersistent="false"
  22. diskExpiryThreadIntervalSeconds="120"
  23. memoryStoreEvictionPolicy="LRU"
  24. />
  25. </ehcache>

day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件的更多相关文章

  1. Hibernate中的一级缓存、二级缓存和懒加载(转)

    1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...

  2. Hibernate中的一级缓存、二级缓存和懒加载

    1.为什么使用缓存 hibernate使用缓存减少对数据库的访问次数,从而提升hibernate的执行效率.hibernate中有两种类型的缓存:一级缓存和二级缓存. 2.一级缓存 Hibenate中 ...

  3. Hibernate 再接触 一级缓存 二级缓存 查询缓存

    缓存 就是把本来应该放在硬盘里的东西放在内存里  将来存内存里读 一级缓存: session缓存 二级缓存: sessionFactory级别的   (适合经常访问,数据量有限,改动不大) 很多的se ...

  4. Hibernate三种状态,缓存,以及update更新问题

    一. Hibernate中对象的三种状态 1. 瞬时状态(transient) 当我们通过Java的new关键字来生成一个实体对象时,这时这个实体对象就处于自由状态,此时该对象只是通过JVM获得了一块 ...

  5. java-mybaits-00601-查询缓存-一级缓存、二级缓存

    1.什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存. 在操作数据库时需要构造 sql ...

  6. hibernate中的一级缓存与闪照区

    首先Hibernate中的一级缓存默认是打开的,并且范围从session创建到session关闭,存储的数据必须是持久态的数据. 1 //从session创建开始,一级缓存也跟着创建 2 Sessio ...

  7. Mybatis的缓存——一级缓存和源码分析

    目录 什么是缓存? 一级缓存 测试一. 测试二. 总结: 一级缓存源码分析: 1. 一级缓存到底是什么? 得出结论: 2. 一级缓存什么时候被创建? 3. 一级缓存的执行流程 结论: 一级缓存源码分析 ...

  8. 缓存篇~第七回 Redis实现基于方法签名的数据集缓存(可控更新,分布式数据缓存)

    返回目录 本篇文章可以说是第六回 Microsoft.Practices.EnterpriseLibrary.Caching实现基于方法签名的数据集缓存(可控更新,WEB端数据缓存)的续篇,事实上,有 ...

  9. 使用缓存Memcache存储更新微信access token

    关键字:Memcache access_token 更新 存储 7200 本文介绍如何使用缓存Memcache存储及更新 access token的方法. 一.Access Token access_ ...

随机推荐

  1. this指针/常函数、常对象

    this指针引入 类中对象的成员变量和成员函数是分开存储的,sizeof(空class) = 1,另外示例中涉及到字节对齐的问题,double本身的字节为8,int为4,由于字节对齐,int也为8,所 ...

  2. sulin Python3.6爬虫+Djiago2.0+Mysql --实例demo

    1.切换到项目目录下,启动测试服务器 manage.py runserver 192.168.0.108:8888 2.设置相关配置 项目目录展示如下: beauty=>settings.py ...

  3. springboot下slf4j配置

    我们在引用的时候直接写 private static final Logger logger = LoggerFactory.getLogger(XXXServiceImpl.class); log. ...

  4. python 编程 一次错误记录 -1073740791

    原因是发生在我错把类当做实例化对象使用了

  5. Vue中的better-scroll插件

    Vue中的better-scroll插件 在需要的文件中添加 import BScorll from 'better-scroll'; 引用的示例代码: let scroll = new BScrol ...

  6. Java 多线程同步和异步详解

    java线程 同步与异步 线程池 1)多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线 程的处理的数据,而B线程又修改了A线程处理的数理.显然这是由于全局资源造成 ...

  7. springboot-actuator监控的401无权限访问

    在pom.xml里边添加 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...

  8. ip-up脚本参数

    pppoe连接建立后,系统自动调用/etc/ppp/ip-up脚本. 其参数如下面文件所示,第4个参数是系统获得的动态ip.#!/bin/bash## Script which handles the ...

  9. MYSQL实现列拼接,即同一个字段,多条记录拼接成一条

    一.首先,新建三张表 DROP TABLE IF EXISTS `article`; CREATE TABLE `article` ( `id` ) unsigned NOT NULL AUTO_IN ...

  10. VirtualBox安装CentOS后分辨率和鼠标无缝切换问题

    问题:VirtualBox安装完后出现分辨率只有800*600和1024*768,鼠标不能在虚拟机和本机件无缝切换. 解决办法:在终端中执行以下命令 yum install kernel yum in ...