mybatis-生命周期和作用域

讨论 SqlSessionFactoryBuilder SqlSessionFactory SqlSession 的生命周期和作用域

生命周期:

SqlSessionFactoryBuilder :为了创建 SqlSessionFacrot y而生,创建完成后就失去作用,此时应该销毁.

SqlSessionFactory :相当于是一个数据库的连接池,为了创建 sqlSession 接口对象而存在,而 Mybatais 的作用就是操作数据库,所以 SqlSessionFactory 的生命周期与 Mybatis 应用周期相同,并 SqlSessionFactory 作为一个数据库连接池,为利于对数据库资源的控制和避免数据库连接资源的浪费,我们往往希望 SqlSessionFactory 作为一个单例,让它在应用中被共享.

SqlSession 相当于是一个数据库连接(Connection对象),存活于一个业务中,当业务开始之前被创建,业务操作完成后被关闭,将连接归还于 SqlSessionFactory ,防止数据库资源被消耗,所以使用 try...catch...finally... 语句来保证其正确关闭.

最佳作用域:

SqlSessionFactoryBuilder : 方法作用域(方法局部变量)

SqlSessionFactory : 应用作用域

SqlSession : 请求或方法作用域

流程图:

posted @ 2022-01-05 16:08  从0开始丿  阅读(63)  评论(0编辑  收藏  举报