mybatis一级缓存和二级缓存

爱拼才会赢      2022-02-12     544

关键词:

MyBatis 中的缓存

一级缓存

  Mybatis 一级缓存的作用域是同一个SqlSession,在同一个sqlSession中执行两次相同的SQL语句,第一次执行完毕后会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据不再从数据库中查询,从而提高查询效率。当一个sqlSession结束后该SqlSession中的一级缓存也就不存在了。Mybatis默认开启一级缓存。

    一级缓存是session级别的缓存,数据被缓存在session对象中

    特点:必须使用同一个session,一级缓存对增删改都是安全的。

二级缓存:

  二级缓存放在他的命名空间里,默认是打开的,使用二级缓存属性类需要实现Serializable序列化接口,(可用于保存对象的状态),可在他的映射文件中配置<cache/>

    二级缓存是sessionFactory级别的缓存,数据被缓存在sessionFactory对象中

    特点:必须使用同一个sessionFactory对象,只对查询缓存,二级缓存对于增删改是不安全的,只对查询安全,二级缓存会对缓存的数据进行序列化。

三 缓存算法:

    缓存 文件的读取速度慢于内存 所有有些查询过一次的数据 临时存储在内存中 二次查询 判断 内存是否存在 存在读取内存 不存在读取数据库

  缓存举例:

package cn.et.mybatis.lesson05;

import java.util.HashMap;
import java.util.Map;
/**
 * 缓存每行数据必须唯一标识符
 * @author Administrator
 *
 */
public class Cache{
    //其实缓存就是一个Map
    private Map map=new HashMap();
    
    public Object cache(String key,Object obj){
        if(map.containsKey(key)){
            return map.get(key);
        }else{
            //连接数据库读取
            map.put(key, obj);
            return obj;
        }
    }
    public static void main(String[] args) {
        
    }
}

当内存不足时 考虑 将某些数据T出内存
    FIFO 将队列最右端的数据T出内存

    LFU 使用次数最少的T出内存
    LRU 最近使用次数最少的



mybatis的一级缓存和二级缓存

一级缓存是SqlSession级别的缓存,当使用了clearCache方法和,或者close方法的话,这个缓存失效,如果还有同样的查询,则还会发送一次查询SqlSessionsession=SqlSessionFactoryUtil.getSession();Empemp=session.selectOne("queryEmpByNo",7900);System.out... 查看详情

mybatis一级缓存和二级缓存

缓存详细介绍,结果集展示https://blog.csdn.net/u013036274/article/details/55815104 配置信息http://www.pianshen.com/article/16399265/ ************详细介绍*************https://my.oschina.net/zjllovecode/blog/18175 查看详情

mybatis-一级缓存与二级缓存

 1.1  什么是查询缓存mybatis提供查询缓存,用于减轻数据压力,提高数据库性能。mybaits提供一级缓存,和二级缓存。 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个(内存区... 查看详情

mybatis学习--缓存(一级和二级缓存)

声明:学习摘要!MyBatis缓存  我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些... 查看详情

mybatis的一级缓存和二级缓存(代码片段)

一级缓存一级缓存在mybatis中默认是开启的并且是session级别,它的作用域为一次sqlSession会话。mybatis默认是开启了一级缓存的。一级缓存的作用域有两种:session(默认)和statment,可通过设置local-cache-scope的值... 查看详情

源码级mybatis缓存策略(一级和二级缓存)(代码片段)

...们可以避免频繁的与数据库进行交互,进而提高响应速度MyBatis也提供了对缓存的支持,分为一级缓存和二级缓存,可以通过下图来理解:①、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一... 查看详情

mybatis缓存的使用和源码分析

Mybatis缓存使用在Mybatis中缓存分为一级缓存和二级缓存,二级缓存又称为全局缓存,默认一级缓存和二级缓存都是开启的,只是二级缓存的使用需要配置才能生效,在Mybatis中一级缓存是SqlSession级别也就是会话级别的,而二级缓... 查看详情

mybatis一级缓存与二级缓存的区别你知道吗(代码片段)

前言Java面试经常问到Mybatis一级缓存和二级缓存,今天就给大家重点详解Mybatis一级缓存和二级缓存原理与区别。Mybatis缓存缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存可以避免频繁与数据库... 查看详情

mybatis一级缓存与二级缓存的区别你知道吗(代码片段)

前言Java面试经常问到Mybatis一级缓存和二级缓存,今天就给大家重点详解Mybatis一级缓存和二级缓存原理与区别。Mybatis缓存缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存可以避免频繁与数据库... 查看详情

mybatis的一级缓存和二级缓存

一级缓存基于sqlSession默认开启,在操作数据库时需要构造SqlSession对象,不同的SqlSession之间的缓存数据区域是互相不影响的。一级缓存的作用域是SqlSession范围的,当在同一个sqlSession中执行两次相同的sql语句时,第一次执行完毕会... 查看详情

mybatis缓存,包含一级缓存与二级缓存,包括ehcache二级缓存

...了提高性能。明白了这一点下面我们开始进入正题。二,mybatis缓存概要①、mybatis的缓存有两种,分别是一级缓存和二级缓存。两者都属于查询缓存,也就是只有执行查询操作的时候才起缓存作用,对于增删改操作无效。②、一... 查看详情

mybatis的一级缓存和二级缓存

一级缓存基于sqlSession默认开启,在操作数据库时需要构造SqlSession对象,在对象中有一个HashMap用于存储缓存数据。不同的SqlSession之间的缓存数据区域是互相不影响的。一级缓存的作用域是SqlSession范围的,当在同一个sqlSessi... 查看详情

mybatis一级缓存与二级缓存

MyBatis一级缓存  MyBatis一级缓存默认开启,一级缓存为Session级别的缓存,在执行以下操作时一级缓存会清空  1.执行session.clearCache();  2.执行CUD操作  3.session.close();//不是同一个Session对象了 MyBatis二级缓存  需要配... 查看详情

mybatis的一级缓存和二级缓存(代码片段)

文章目录缓存是什么?Mybatis提供的缓存一级缓存?一级缓存什么时候过期?什么时候清空?二级缓存?什么时候存?怎么配置?第一种配置:第二种配置:二级缓存什么时候过期?什么时候... 查看详情

mybatis延迟加载和缓存机制(一级二级缓存)

...息。所以这就是突出了懒这个特点。真是懒啊。    Mybatis中resultMap可以实 查看详情

mybatis系列目录--5.mybatis一级缓存和二级缓存(redis实现)

转载请注明出处哈:http://carlosfu.iteye.com/blog/22386620.相关知识:查询缓存:绝大数系统主要是读多写少。缓存作用:减轻数据库压力,提供访问速度。  1.一级缓存测试用例(1)默认开启,不需要有什么配置(2)示意图 (3)测... 查看详情

mybatis一级缓存和二级缓存及ehcache整合

一级缓存什么是缓存??  缓存是存储在内存(cache)中的数据,一般情况都存在内存,在内存数据存储满了,会存储到硬盘上(disk),或是在我们进行一些操作和配置也可以把缓存存储到磁盘中。缓存的作用是什么??  缓存... 查看详情

mybatis缓存

资料来自一级缓存和二级缓存一级缓存和二级缓存注解mapper一级缓存一级缓存,是指SqlSession级别的缓存。一级缓存是一直开启的,在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不... 查看详情