mybatis 中的SqlSessionTemplate 理解

mybatis 涉及的jar 有2个:

 1,mybatis .jar  是mybatis的基础jar包;

 2,  mybatis-spring.jar :spring 对mybatis的整合jar包;

   

查看2中的源码我们知道,

源码我们何以看到 SqlSessionTemplate 实现了SqlSession接口,也就是说我们可以使用SqlSessionTemplate 来代理以往的DefailtSqlSession完成对数据库的操作,但是DefailtSqlSession这个类不是线程安全的,所以这个类不可以被设置成单例模式的。

如果是常规开发模式 我们每次在使用DefailtSqlSession的时候都从SqlSessionFactory当中获取一个就可以了。但是与Spring集成以后,Spring提供了一个全局唯一的SqlSessionTemplate示例 来完成DefailtSqlSession的功能,问题就是:无论是多个dao使用一个SqlSessionTemplate,还是一个dao使用一个SqlSessionTemplate,SqlSessionTemplate都是对应一个sqlSession,当多个web线程调用同一个dao时,它们使用的是同一个SqlSessionTemplate,也就是同一个SqlSession,那么它是如何确保线程安全的呢?如mybatis 中的SqlSessionTemplate 理解_第1张图片


mybatis 中的SqlSessionTemplate 理解_第2张图片

以上是Spring对mybatis中的部分整合

你可能感兴趣的:(mybatis 中的SqlSessionTemplate 理解)