MyBatis基础之SqlSession

SqlSession 线程安全问题

当你翻看 SqlSession 的源码时,你会发现它只是一个接口。我们通过 MyBatis 操作数据库,实际上就是通过 SqlSession 获取一个 JDBC 链接,然后操作数据库。

SqlSession 接口有 3 个实现类:

# 实现类
1 DefaultSqlSession
2 SqlSessionManager
3 SqlSessionTemplate(在 mybatis-spring 包中)

其中

  • DefaultSqlSession 的注释中很直接地标识:Note that this class is not Thread-Safe.

  • SqlSessionManager 最终用到的也是 SqlSession ,因此它也是 not Thread-Safe

  • SqlSessionTemplate 倒是线程安全的,但是它在 mybatis-spring 包中,是用在 mybatis 和 spring 整合中的,暂时用不上。

因此,SqlSession 不应该是单例的,于此同时,依赖于 session 的 Mapper 要么也应该是多例的,要么就要用上 ThreadLocal !

相关推荐
霸道流氓气质27 分钟前
MyBatis 分页查询 + Feign 数据补充实战指南
数据库·oracle·mybatis
隐退山林1 小时前
JavaEE进阶:MyBatis操作数据库(进阶)
数据库·java-ee·mybatis
一条泥憨鱼6 小时前
深入理解Java反射(超详细)
java·开发语言·spring·mybatis·反射
一条泥憨鱼7 小时前
详解MyBatis 动态 SQL
java·数据库·sql·mysql·mybatis·动态sql
疯狂成瘾者1 天前
springboot的依赖注入
spring boot·sql·mybatis
Devin~Y1 天前
互联网大厂Java面试实录:Spring Boot、Kafka、Redis一致性与Spring AI RAG(小Y的翻车现场)
java·spring boot·redis·kafka·mybatis·hibernate·jpa
XS0301062 天前
MyBatis关联映射
java·mybatis
是宇写的啊2 天前
博客系统-小项目
java·数据库·spring boot·mybatis
YOU OU2 天前
MyBatis-Plus 使用
mybatis
月落归舟3 天前
MyBatis缓存机制
java·缓存·mybatis