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 !

相关推荐
Full Stack Developme4 小时前
MyBatis-Plus 注解教程
java·spring·mybatis
ffqws_4 小时前
Spring Boot 整合 PageHelper 实现分页查询
java·spring boot·mybatis
MegaDataFlowers4 小时前
常用的注解
mybatis
zhougl9964 小时前
Redis 防止丢数据
java·redis·mybatis
阿冰冰呀16 小时前
互联网大厂Java求职面试实录:谢飞机的“水货”之路
java·mybatis·dubbo·springboot·线程池·多线程·hashmap
Y001112361 天前
MyBatis
数据库·mybatis
zl_code_le1 天前
浅谈MapperScan
mybatis
Boop_wu1 天前
[Java EE进阶] 图书管理系统(2)
spring·java-ee·maven·mybatis·状态模式
小张小张爱学习1 天前
Mybatis高频面试题
java·spring·mybatis