• Mybatis缓存


    一级缓存

    • 一级缓存为SqlSession缓存,二级缓存为SqlSessionFactory缓存,缓存仅作用于同一namespace
    • SqlSession缓存可以刷新(清空),<select>标签配置中使用flushCache="true"属性
    • 缓存是相互隔离的,不同SqlSession对象之间不共享缓存
    • 数据发生变动后会清除缓存,在数据变动频繁的地方不适宜使用缓存
    • Mybatis会通过算法生成键,与查询结果数据一起放入Map中,读缓存就是读取Map

    二级缓存

    • 一级缓存为SqlSession缓存,二级缓存为SqlSessionFactory缓存,缓存仅作用于同一namespace
    • SqlSessionFactory有两种开关
    • 总开关在mybatis-config.xml中<setting name="cacheEnabled" value="true"/>默认打开
    • 分开关在对应的namespace中,默认关闭,使用<cache/>标签即可打开,其信徒众多
    1. type:缓存的实现"类型",默认PERPETUAL,org.apache.ibatis.cache.impl.PerpetualCache,可扩展或替换
    2. eviction:"撤退"的方式,LRU(最近最少使用,默认)、FIFO(先进先出)、SOFT(gc软引用)、WEAK(gc弱引用)
    3. flushInterval:刷新间隔,默认不设置,只有在数据变动时自己刷新;当设置后则按时间刷新
    4. size:缓存数量,默认1024
    5. readOnly:默认false,false表示可写,会反序列化复制一份对象进行读写,较为安全
    6. blocking:阻塞,默认false,不阻塞的方式在并发查询时可能会穿透缓存查询数据库,true会在查询前加锁保证若命中就不查询
  • 相关阅读:
    在网易和百度实习之后,我才明白了这些事
    从Java小白到收获BAT等offer,分享我这两年的经验和感悟
    曾经做的一个JS小游戏——《Battle City》
    适配器(Adapter)模式
    装饰器(Decorator)模式
    Java IO
    JDBC中驱动加载的过程分析
    从PipedInputStream/PipedOutputStream谈起
    从InputStream到ByteArrayInputStream
    JDK中的动态代理
  • 原文地址:https://www.cnblogs.com/duduchong/p/13304099.html
Copyright © 2020-2023  润新知