1.Mybatis的基本组成
- SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
- SqlSessionFactory:依靠工厂来生成SqlSession(SQLSession会话:相当于JDBC中的Connection对象)
- SqlSession:即可以发送SQL去执行并返回结果,也可以获取Mapper的接口
- SQL Mapper:它是Mybatis新设计的组件,它是由一个Java接口和Xml文件(或注解)构成的,需要给出对应的SQL和映射规则,它负责发送SQL去执行,并返回结果。
2.生命周期
- SqlSessionFactoryBuilder :
作用就是创建SQLSessionFactory,所以创建完成后作用即完成,将它回收,所以它的生命周期只存在于方法的局部。 - SqlSessionFactory :
每次应用程序需要访问数据库,我们就通过SQLSessionFactory来创建SQLSession(相当于Connection对象),所以SqlsessionFactory应该在Mybatis应用的整个生命周期中,其职责就是创建SQLSession,为了节省数据库的资源,我们采用单例模式,一个数据库只对应一个SQLSessionFactory,管理好数据库资源的分配。 - SqlSessionFactory :
是一个会话,相当于JDBC中的Connection对象,它的生命周期应该是请求数据库处理事务的过程中。它是一个线程不安全的对象,在涉及多线程编程的过程中,要特别当心,此外每次创建完成后都要及时关闭,长期不关闭会严重影响数据库的性能。我们往往在finally语句块中关闭它。它存活在一个应用的请求和操作,可以执行多条SQL语句,保证事务的一致性。 - SqlSessionFactory :
Mapper是一个接口而没有任何的实现类,它的作用是发送SQL,然后返回我们需要的结果,或者执行SQL从而修改数据库中数据,因此它应该在一个SQLsession事务方法之内,是一个方法级别的东西,就如同JDBC中的一条SQL语句执行,最大范围和SQLSession相同。