设计公司网站设计方案,陕西省建设监理协会网站证件查询,wordpress简体中文下载,简单手机app制作SqlSession 线程安全问题
当你翻看 SqlSession 的源码时#xff0c;你会发现它只是一个接口。我们通过 MyBatis 操作数据库#xff0c;实际上就是通过 SqlSession 获取一个 JDBC 链接#xff0c;然后操作数据库。
SqlSession 接口有 3 个实现类#xff1a;
#实现类1Defa…
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