zoukankan      html  css  js  c++  java
  • mybatis的一级缓存

    如果使用额外发送SQL的方式 加载关联对象

    如果列表中关联的对象的id部分相同,那么mybatis发送的SQL数量会减少

    由此判断,mybatis中一定存在一个缓存

    下面就来说一下mybatis的一级缓存:

    首先来做个测试   查询两个对象

     1 // 测试mybatis的一级缓存
     2     @Test
     3     public void TestSqlSessionCache() {
     4         try {
     5             SqlSession session = MybatisUtil.openSession();
     6             EmployeeMapper employeeMapper = session
     7                     .getMapper(EmployeeMapper.class);
     8             employeeMapper.get(1L);
     9             employeeMapper.get(2L);
    10             session.commit();
    11             session.close();
    12         } catch (Exception e) {
    13             e.printStackTrace();
    14         }
    15     }

    发送两条SQL语句,

    但是如果对一个对象查询两次,会发送几条SQL呢

     1 // 测试mybatis的一级缓存
     2     @Test
     3     public void TestSqlSessionCache() {
     4         try {
     5             SqlSession session = MybatisUtil.openSession();
     6             EmployeeMapper employeeMapper = session
     7                     .getMapper(EmployeeMapper.class);
     8             employeeMapper.get(1L);
     9             employeeMapper.get(1L);
    10             session.commit();
    11             session.close();
    12         } catch (Exception e) {
    13             e.printStackTrace();
    14         }
    15     }

    结果会发现只发送一条SQL

    1. 说明mybatis的SqlSession中也存在一个缓存,我们称之为一级缓存

    2.一级缓存的生命周期和SqlSession一样长

    3.在SqlSession中有一个clearCache方法可以清空一级缓存

    4.回顾,在hibernate的session中还提供了一个evict(Object)方法可以清除一个指定的缓存对象,为什么mybatis中没有?

    注意:在mybatis,根本不存在get,mybatis 中只有select,所以mybatis中所有的缓存,包括一级缓存和缓存,都是缓存的查询SQL

    5.列表中关联的对象的id部分相同,那么mybatis发送的SQL数量会减少的真正原因:mybatis在查询的时候,把SQL和查询出来的对象进行缓存

  • 相关阅读:
    Python datetime time 等时间 日期 之间的计算和相互转化
    微信浏览器的html5页面显示配置等问题汇集 1,禁止微信浏览器分享页面链接 (定点更新)
    《Monitoring and Tuning the Linux Networking Stack: Receiving Data》翻译
    kubernetes安全认证相关资料
    ovn-architecture 摘要
    apt-get tips
    CNI插件编写框架分析
    ovn-kubernetes安装指南
    ovn-kubernetes执行流程概述
    《OVN Logical Flows and ovn-trace》翻译
  • 原文地址:https://www.cnblogs.com/llynic/p/6378359.html
Copyright © 2011-2022 走看看