>>分享流行的Java框架以及开源软件,对孙卫琴的《精通Spring》、《Spring Cloud Alibaba微服务开发零基础入门到实操》提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 30438 个阅读者 刷新本主题
 * 贴子主题:  深入理解Mybatis一级缓存 回复文章 点赞(0)  收藏  
作者:日月光华    发表时间:2020-07-10 01:48:52     消息  查看  搜索  好友  邮件  复制  引用

深入理解Mybatis一级缓存

客户端向数据库服务器发送同样的sql查询语句,如果每次都去访问数据库,会导致性能的降低,那么怎么提高呢?下面小编给大家分享下mybatis为我们提供了一级缓存的策略
客户端向数据库服务器发送同样的sql查询语句,如果每次都去访问数据库,会导致性能的降低。
那么怎么提高呢?
mybatis为我们提供了一级缓存的策略
在一个sqlSession开启和关闭之间,sqlSession对象内部(其实是Executor)会维护一个缓存的对象,当查询数据时候,先从缓存中寻找是否存在该条数据,存在就直接取出来,不存在,向数据库发送sql查询, 然后将查询后的数据存入缓存,和返回给程序。
这样会存在一个问题:
如果在第一次和第二次查询期间,有程序更改了要查讯的数据库的数据,就会引起读取的数据是错误的,也就是
脏读,其实是mybatis在sqlSession执行commit()方法后会清空这个缓存。第二次去查询,依然会从数据库中查询.
也可以手动调用sqlSession的clearCache()方法清除缓存
小例子:
@Test
  public void testCacheLever1() throws Exception{
    SqlSession session = factory.openSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    //第一次请求,查询id为1的用户
    User user = mapper.findUserById(1);
    System.out.println(user);
    //更改数据,会清空缓存
    user.setUsername("yyyy");
    mapper.updateUser(user);
    session.commit();
    //第二次查询会从缓存中找
    User user2 = mapper.findUserById(1);
    System.out.println(user2);
    session.close();
  }

以上所述是小编给大家介绍的Mybatis一级缓存,希望对大家有所帮助.


程序猿的技术大观园:www.javathinker.net
  Java面向对象编程-->内部类
  JavaWeb开发-->多线程(上)
  JSP与Hibernate开发-->使用Session(Ⅱ)
  Java网络编程-->使用过滤器
  精通Spring-->Java Web项目实战:开发商业购物网站
  Vue3开发-->映射一对多关联关系
  福利:Spring Cloud Alibaba微服务开发零基础入门到实操-经典...
  Maven 安装及环境配置
  Java POI的使用方法(基于POI将Word、Excel、PPT转换为html)之...
  Mybatis常见注解有哪些?
  99%的人都能看懂的“熔断”以及最佳实践
  循序渐进,阿里架构师看完都赞叹的Redis分布式锁原理分析
  Spring MVC的@ExceptionHandler注解的用法
  拦截器不拦截静态资源的三种处理方法
  springMVC:HandlerInterceptor拦截器的使用
  【项目实践】有了SpringBoot还有必要学SSM整合吗 - RudeCrab...
  Spring数据验证 中@NotNull, @NotEmpty和@NotBlank之间的区别
  理解 RESTful 风格的 API
  Spring+JPA+ehcache开启二级本地缓存
  kubernetes 中的资源
  Zabbix后端存储ES的优化实践
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。