SessionFactory机制原理

2.1 SqlSessionFactory基本介绍
对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.
SqlSessionFactory是MyBatis框架中的一个接口,主要负责MyBatis框架初始化操作以及为开发人员提供SqlSession对象.

SessionFactory机制原理
文章图片
image.png SqlSessionFactory有两个实现类
(1) SqlSessionManager类(被抛弃)
(2) DefaultSqlSessionFactory类

SessionFactory机制原理
文章图片
image.png
2.2 SqlSessionFactory基本执行流程

  1. 调用 SqlSessionFactoryBuilder 对象的 build(inputStream) 方法;
  2. SqlSessionFactoryBuilder 会根据输入流 inputStream 等信息创建XMLConfigBuilder 对象 ;
  3. 【SessionFactory机制原理】SqlSessionFactoryBuilder 调用 XMLConfigBuilder 对象的 parse() 方法;
  4. XMLConfigBuilder 对象返回 Configuration 对象;
  5. SqlSessionFactoryBuilder创建一个DefaultSessionFactory 对象,并将Configuration对象作为参数传给DefaultSessionFactory对象;
  6. SqlSessionFactoryBuilder 返回 DefaultSessionFactory 对象给 Client ,供 Client使用。
    Client可以使用DefaultSessionFactory对象创建需要的SqlSession.
    上述的初始化过程中,涉及到了以下几个对象:
    ? SqlSessionFactoryBuilder : SqlSessionFactory的构造器,用于创建SqlSessionFactory,采用了Builder设计模式
    ? Configuration :该对象是mybatis-config.xml文件中所有mybatis配置信息
    ? SqlSessionFactory:SqlSession工厂类,以工厂形式创建SqlSession对象,采用了Factory工厂设计模式
    ? XmlConfigParser :负责将mybatis-config.xml配置文件解析成Configuration对象,共SqlSessonFactoryBuilder使用,创建SqlSessionFactory
    2.3 SqlSessionFactory涉及的设计模式----Builder(建造者模式)
    2.3.1 什么是Builder设计模式
    Builder模式,称为[建造者设计模式].使用多个简单的对象一步一步构建一个复杂的对象.这种模式属于[创建型模式].目前它是创建对象的最佳模式.
    2.3.2 SqlSessionFactoryBuilder与SqlSessionFactory之间关系
    SqlSessionFactoryBuilder是Builder模式中建造者,负责SqlSessionFactory对象的创建以及SqlSessionFactroy对象内部所需要内容的组装.

    SessionFactory机制原理
    文章图片
    image.png

    推荐阅读