深入理解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(); }
问题:
如果sqlSession关闭了,缓存也就清空了。这怎么使用缓存来提高效率呢?
好了,下篇文章给大家介绍mybatis二级缓存。
以上所述是小编给大家介绍的Mybatis一级缓存,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对PHP中文网的支持!
更多深入理解Mybatis一级缓存相关文章请关注PHP中文网!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。
