为什么学习:一但错误使用会导致非常严重的并发问题
具体流程如下图:
1、SqlSessionFactoryBuilder
SqlSessionFactoryBuilder作用就是为例创建SqlSessionFactory的一旦创建就不需要了,所以他的作用域局部变量就够了。
2、SqlSessionFactory
SqlSessionFactory可以理解为jdbc中的数据库连接池对象
SqlSessionFactory一旦创建就应该在应用运行期间一直存在,没有任何理由丢弃它或重新创建一个实例
因此SqlSessionFactory的最佳作用域为应用作用域
最简单的就是使用单例模式或静态单例模式
3、SqlSession
可以理解为连接到数据库连接池的一个请求
SqlSession的实例是线程不安全的,因此是不能被共享的,它的最佳作用域是请求或方法作用域
用完之后要赶紧关闭SqlSession,否则资源会被占用
4、Mapper
mapper就相当于一个具体的业务