生命周期和作用域极其重要,错误的使用会导致并发问题!

程序执行流程如下:

Mybatis入门(五) 生命周期和作用域_sql

 

 

SqlSessionFactoryBuilder

这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了,最佳作用域时方法作用域,也就是局部变量

 

SqlSessionFactory 

可以将这个想象成数据库连接池,因此 SqlSessionFactory 的最佳作用域是应用作用域,一旦被创建就应该在应用的运行期间一直存在

 

SqlSession

可以当作连接到数据库连接池的一个请求。每个线程都应该有它自己的 SqlSession 实例,用完需要赶紧关闭,否则占用资源,最佳的作用域是请求或方法作用域。例如,每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它。 这个关闭操作很重要,为了确保每次都能执行关闭操作,你应该把这个关闭操作放到 finally 块中。

 

Mybatis入门(五) 生命周期和作用域_生命周期_02

 

每一个mapper代表一个具体业务