zoukankan      html  css  js  c++  java
  • mybatis 梳理17--缓存 (占坑) 一级缓存、二级缓存、三级缓存

    1、为什么要用缓存?

    如果缓存中有数据,就不用从数据库获取,大大提高系统性能。

    mybatis提供一级缓存和二级缓存

    2、一级缓存:

    (1)一级缓存是sqlsession级别的缓存

    在操作数据库时,需要构造sqlsession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据

    不同的sqlsession之间的缓存区域是互相不影响的。

    (2)一级缓存工作原理:

    ①第一次发起查询sql查询用户id为1的用户,先去找缓存中是否有id为1的用户,如果没有,再去数据库查询用 户信息。得到用户信息,将用户信息存储到一级缓存中。

    ②如果sqlsession执行了commit操作(插入,更新,删除),会清空sqlsession中的一级缓存,避免脏读

    ③第二次发起查询id为1的用户,缓存中如果找到了,直接从缓存中获取用户信息

    ④mybatis默认支持并开启一级缓存。

    (3)一级缓存演示

                 

    (4)一级缓存失效

    1. sqlSession不同

    2. 当sqlSession对象相同的时候,查询的条件不同,原因是第一次查询时候一级缓存中没有第二次查询所需要的数据

    3. 当sqlSession对象相同,两次查询之间进行了插入的操作

    4. 当sqlSession对象相同,手动清除了一级缓存中的数据

  • 相关阅读:
    1451. Rearrange Words in a Sentence
    1450. Number of Students Doing Homework at a Given Time
    1452. People Whose List of Favorite Companies Is Not a Subset of Another List
    1447. Simplified Fractions
    1446. Consecutive Characters
    1448. Count Good Nodes in Binary Tree
    709. To Lower Case
    211. Add and Search Word
    918. Maximum Sum Circular Subarray
    lua 时间戳和时间互转
  • 原文地址:https://www.cnblogs.com/Master-Sun/p/14313704.html
Copyright © 2011-2022 走看看