Mybatis中的一级缓存和二级缓存
        一级缓存:
            它指的是Mybatis中SqlSession对象的缓存。
            当我们执行查询之后,查询的结果会同时存入到SqlSession为我们提供一块区域中。
            该区域的结构是一个Map。当我们再次查询同样的数据,mybatis会先去sqlsession中
            查询是否有,有的话直接拿出来用。
            当SqlSession对象消失时,mybatis的一级缓存也就消失了。
创建新项目

复制pom.xml的依赖

导入一对多的代码

只需要演示缓存,很多代码不需要。 删除IAccountDao

Account和AccountUser删除


测试类中的删除AccountTest删除

因为没有account。所以这里resultMap可以删除掉。

返回的这里改成resultType="user" 而不用resultMap

查询两次id为41的 判断 两个结果集的引用地址是否为一个

把实体类重写的toString方法先注释掉。

测试方法。运行结果。地址为同一个

只发起了一次查询

演示session关闭缓存消失


再次执行测试方法
对象的引用只不再是同一个

获取了两次SqlSession对象。执行两次select查询

当SqlSession消失时我们的一次缓存也消失了

clearCache

虽然是一个SqlSession但是 是两次查询

阶段3 1.Mybatis_11.Mybatis的缓存_6 Mybatis中的一级缓存的更多相关文章

  1. 【MyBatis学习12】MyBatis中的一级缓存

    缓存的作用是减轻数据库的压力,提高数据库的性能的.mybatis中提供了一级缓存和二级缓存,先来看一下两个缓存的示意图:   从图中可以看出: 一级缓存是SqlSession级别的缓存.在操作数据库时 ...

  2. Hibernate缓存简介和对比、一级缓存、二级缓存详解

    一.hibernate缓存简介 缓存的范围分为3类:  1.事务范围(单Session即一级缓存)     事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象 ...

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

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

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

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

  5. 01-08-01【Nhibernate (版本3.3.1.4000) 出入江湖】NHibernate中的一级缓存

    缓存的范围? 1.事务范围 事务范围的缓存只能被当前事务访问,每个事务都有各自的缓存,缓存内的数据通常采用相互关联的对象形式.缓存的生命周期依赖于事务的生命周期,只有当事务结束时,缓存的生命周期才会结 ...

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

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

  7. 深入理解MyBatis中的一级缓存与二级缓存

    http://blog.csdn.net/weixin_36380516/article/details/73194758   先说缓存,合理使用缓存是优化中最常见的,将从数据库中查询出来的数据放入缓 ...

  8. 在Hibernate框架中详谈一级缓存

    在学习Hibernate的过程中我们肯定会碰上一个名词---缓存,一直都听说缓存机制是Hibernate中的一个难点,它分为好几种,有一级缓存,二级缓存和查询缓存 今天呢,我就跟大家分享分享我所理解的 ...

  9. 阶段3 1.Mybatis_12.Mybatis注解开发_6 mybatis注解开发一对一的查询配置

    新建Account实体类 生成getter和setter还有toString方法 先创建dao类 全局的配置,这里要改成package 创建多对一的关系 在查询的时候输出user这个对象的内容 建立查 ...

随机推荐

  1. 日语能力测试N1、N2级听力必备核心词汇—头发篇

    日语能力测试N1.N2级听力必备核心词汇—头发篇 要想在短时间内迅速提高日语听力能力的水平,除了每天练习(用2倍的速度)真题之外,掌握听力的核心词汇也是一个必要的好方法. 髪(かみ)--头发髪型(かみ ...

  2. apache 单个ip配置多个发布目录多个域名

    1.找到apache 配置文件 httpd.conf 搜索   Include conf/extra/httpd-vhosts.conf  去掉前面的注释; 注释不注释都可以 DocumentRoot ...

  3. jenkins项目名称改后,同步nginx配置

    jenkins项目名称修改后,workspace的名称会同步更改,构建完了和原来的不是一个路径,如果每个前端项目一个单独的tomcat的话,需要更改nginx配置 /etc/nginx/conf.d

  4. u-boot log_init函数分析

    log_init, int log_init(void){    struct log_driver *drv = ll_entry_start(struct log_driver, log_driv ...

  5. Bootstrap 中文文档教程

    Bootstrap 中文文档教程 Bootstrap 中文文档教程 全局样式和grid布局—Bootstrap中文使用指南 全局样式1.要求html5文档类型 Bootstrap使用的css属性和ht ...

  6. java常用类与包装类--包装类

    2.基本数据类型数据的包装类 局部变量中基本数据类型直接分配在栈中,而对象分配在堆中 将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法来操作该数据 包装类主要功能:用于基本数据类型与字 ...

  7. ESP8266---TCP Client

    ESP8266WiFi库里面还有其他重要内容,比如跟http相关的 WiFiClient.WiFiServer,跟https相关的 WiFiClientSecure.WiFiServerSecure ...

  8. 【NOIP2016提高A组五校联考1】排队

    题目 分析 首先预处理出每个点的优先级,当有一个人进入时,一定会走到优先级最大的空房间中. 把所有空的房间扔到一个堆中,按优先级大小维护这个堆. 答案怎么求就不说了,很容易想到,就只讲操作吧. 对于第 ...

  9. c++string int转化简单写法

    #include<iostream> #include<string> #include<sstream> //定义了stringstream类 using nam ...

  10. Java面试框架篇(8)

    71,谈谈你对Struts的理解. 1. struts是一个按MVC模式设计的Web层框架,其实它就是一个Servlet,这个Servlet名为ActionServlet,或是ActionServle ...