配置解析之生命周期和作用域问题
生命周期和作用域
生命周期和作用域是至关重要的,因为错误的使用会导致非常严重的并发问题
流程:
SqlSessionFactoryBuilder
- 一旦创建SqlSessionFactory,就不需要它了
- 所以它的作用域为局部变量
SqlSessionFactory
- 可以想象为:数据库连接池
- 一旦创建就一直存在,没有任何理由丢弃它或创建新的实例
- 因为SqlSessionFactory的最佳作用域是应用作用域(全局)
- 最简单的就是使用单例模式或者静态单例模式
SqlSeesion
- 每个线程都应该有自己的SqlSession实例;连接到连接池的一个请求
- 需要开始和关闭
- SqlSession不是线程安全的,所以不能被共享,最佳的作用域是放到一个方法里,用完就关闭,否则资源被占用
这里面的每一个mapper,就代表一个具体的业务