首先,我们需要知道一件事情:生命周期和作用域是非常重要的,错误的使用会导致非常严重的并发问题。
一个完整的SqlSession对象从创建到结束的图示如下:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bc1a6b481bcce21777b67a5469f6815e.png)
对象详解
SqlSessionFactoryBulider
- 一旦创建了SqlSession对象,便不再需要它
- 作用域为局部变量级
SqlSessionFactory
- 可想象为 数据库连接池
- 一旦被创建,就应在应用运行期间一直存在,不能丢弃或重新创建实例。
- 作用域为:应用作用域
- 最简单的实现方式:单例模式 或 静态单例模式
(保证全局只有一个变量)
SqlSession
- 连接到数据库的一个请求
- 实例为非线程安全类型,因此不能被共享。
- 作用域为:请求或方法作用域
- 调用结束后需及时关闭,否则会造成资源浪费
上图中的每个Mapper都代表一个业务。