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