前言
作用域和生命周期错误使用会导致并发问题。
mybatis执行过程:
1、SqlSessionFactoryBuilder
SqlSessionFactoryBuilder 占用XML资源来创建多个 SqlSessionFactory实例;
SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)
创建完SqlSessionFactory实例就抛弃,以保证所有的 XML 解析资源可以被释放给更重要的事。
2、SqlSessionFactory
SqlSessionFactory创建多个SqlSession 实例;
SqlSessionFactory 的最佳作用域是应用作用域。
可理解为《数据库连接池》
3、SqlSession
连接到连接池的一个请求。
SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
用完之后需要赶紧关闭,否则资源被占用!