所谓生命周期就是每一个对象存活的时间,为了避免继续占用资源,我们会根据它们的时间以及作用来确定其生命周期,消亡的时候被Java虚拟机销毁。
Mybaits的四大组件分别是SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession,Mapper。下面详细解释它们的作用:
-
SqlSessionFactoryBuilder的作用就是创建SqlSessionFactory,创建成功之后SqlSessionFactoryBuilder就失去作用了,所以它只能存在SqlSessionFactory的方法中,而不能让其长期保存。
-
SqlSessionFactory可以被认为是一个数据连接池,它的作用就是创建SqlSession接口对象,因为Mybatis的本质就是Java对数据库的操作,所以它的生命周期就是整个Mybatis的应用之中,一旦创建SqlSessionFactory就是要长期保存它,直到不再使用Mybatis应用,换句换说,SqlSessionFactory = Mybatis。但是它长期占据数据库的连接资源,如果创建多个SqlSessionFactory之后,那么就存在多个数据库连接池,不利于队数据库的控制,导致资源被限制浪费,我们在开发过程中,希望SqlSessionFactory是单例模式,使其在应用中被共享。
-
SqlSession相当于数据连接池的connection对象,可以在一个事务中执行多条SQL,通过commit,rollback等方法,提交或者回滚事务,所以存活在一个业务请求中,处理完整过程之后,我们应当使用close方法,使其归还到SqlSessionFactory中,否则应用资源将很快被消耗完成,使用try··catch··finally··语句来保证来保证其正确关闭。
-
Mapper是一个接口,它是由SqlSession创建,它的生命周期至多(=小于等于)SqlSession一样,Mapper代表的是一个请求中的业务处理。一旦处理完成,我们应当废弃它。