MyBatis缓存

来源:互联网 发布:秦风拍牌软件 编辑:程序博客网 时间:2024/05/21 18:33

      MyBatis 缓存分为 一级缓存 和二级缓存

    一级缓存  sqlsession,在SqlSession中有一个数据区域就是MAP 结构  

             Key  :SQL 语句     条件   statement 等信息组成。

             value:查询结果

  一级缓存工作原理

      把查询过的数据保存在sqlsession的缓存区中,当执行了增,删,改的时候提交COMMIT 。才会去缓存区中去清理 缓存。

       查询的时候先去缓存区中查看,如果数据不存在就去数据库拿。


    二级缓存  就是同一个namespace下的mapper。二级缓存中也是一个MAP结构这个区域就是一级缓存。不过二级缓存是跨sqlsession 级别的。默认是不开启的,如果开启需要在Mapper中使用 <cache>。

缓存是把数据保存到内存中,但是数据越来越大达到内存顶峰 就需要把内存中 的数据持久化到本地中。所以二级缓存的vo类 需要实现序列化接口。

          1:在总的配置文件中开启二级缓存总开关

                 <settings>
<!-- 二级缓存的总开关 -->
<setting name="cacheEnabled" value="true"/>
        </settings>

           2:在需要呗缓存的mapper文件中 使用<!-- 二级缓存 -->
                        <cache></cache>  标签

总结:1级缓存就是在当前sqlsession  中缓存起来  close的时候又释放掉了。

           2级缓存就是在sqlsession 被close的时候把数据保存到系统的一个大MAP中。

          



0 0