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 !

相关推荐
90后小陈老师8 小时前
用户管理系统 05 实现后端注册功能 | Java新手实战 | 最小架构 | 期末实训 | Java+SpringBoot+Vue3
java·开发语言·spring boot·后端·spring·maven·mybatis
好学且牛逼的马11 小时前
【MyBatis-Plus | 常见问题与面试重点】
面试·mybatis
卷到起飞的数分11 小时前
5.MyBatis持久(dao)层框架
java·数据库·mybatis
一点事12 小时前
ruoyi:集成mybatisplus实现mybatis增强
java·开发语言·mybatis
Dreamboat-L17 小时前
IDEA中在springboot项目中整合Mybatis时@Autowired时,提示Could not autowire解决方案
spring boot·intellij-idea·mybatis
v***85719 小时前
Spring Boot 集成 MyBatis 全面讲解
spring boot·后端·mybatis
h***346319 小时前
SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)
spring boot·tomcat·mybatis
爆更小哇1 天前
MyBatis的TypeHandler :优雅地实现数据加密与解密
数据库·后端·mybatis
java1234_小锋1 天前
讲讲Mybatis的一级、二级缓存?
java·开发语言·mybatis
情怀姑娘1 天前
面试题---------------场景+算法
java·算法·mybatis