当前位置:首页 > 编程笔记 > 正文
已解决

MyBatis基础之SqlSession

来自网友在路上 168868提问 提问时间:2023-09-24 08:23:50阅读次数: 68

最佳答案 问答题库688位专家为你答疑解惑

在这里插入图片描述

SqlSession 线程安全问题

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

SqlSession 接口有 3 个实现类:

#实现类1DefaultSqlSession2SqlSessionManager3SqlSessionTemplate(在 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 !

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"MyBatis基础之SqlSession":http://eshow365.cn/6-12652-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!