SessionFactory机制原理

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


image.png

SqlSessionFactory有两个实现类
(1) SqlSessionManager类(被抛弃)
(2) DefaultSqlSessionFactory类


image.png

2.2 SqlSessionFactory基本执行流程

  1. 调用 SqlSessionFactoryBuilder 对象的 build(inputStream) 方法;

  2. SqlSessionFactoryBuilder 会根据输入流 inputStream 等信息创建XMLConfigBuilder 对象 ;

  3. 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对象内部所需要内容的组装.


    image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. SqlSessionFactory基本介绍 SqlSessionFactory是MyBatis框架中的一个接...
    GGarrett阅读 10,227评论 0 6
  • 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis...
    小生_chen阅读 2,515评论 0 1
  • 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis...
    java菜阅读 4,971评论 0 8
  • 一、 MyBatis的初始化做了什么 任何框架的初始化,无非是加载自己运行时所需要的配置信息。 MyBatis的配...
    消失er阅读 5,139评论 0 3
  • 路就在你的脚下,就看你有没有勇气,毅力,胆量去干去闯去拼搏去奋斗! 假如你想平平安安地度过一生,那么一切的希望和成...
    邓立卫阅读 2,999评论 0 3