Save Load
GitHub 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

My Batis 6 My Batis初始化过程:创建 Session 实例的过程

MyBatis初始化过程:创建Session 实例的过程

我们知道MyBatis的持久化操作离不开SqlSessionFactory对象,该对象由SqlSessionFactoryBuilde加载MyBatis的配置文件产生。SqlSessionFactory对象的openSession方法可以打开SqlSession对象。具体代码如下所示:

// 读取mybatis-config.xml 文件
Inputstream inputStream= Resources.getResourceAsStream("mybatis-config.xml");
// 初始化mybatis
// 创建SqlSessionFactory 类的实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建Session 实例
SqlSession session= sqlSessionFactory.openSession();

上述代码的功能是根据配置文件mybatis-config.xml,创建SqlSessionFactory 对象,然后产生SqlSession,执行SQL语句。而MyBatis的初始化就发生在第三句:

SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

现在就让我们看看第三句到底发生了什么。

MyBatis初始化基本过程:

SqlSessionFactoryBuilder 根据传入的数据流生成 Configuration 对象,然后根据 Configuration 对象创建默认的 SqlSessionFactory 实例。

初始化的基本过程如下图所示: image

由上图所示,我们可以得知MyBatis初始化要经过以下几步:

  • (1)调用SqlSessionFactoryBuilder 对象的 build(inputStream)方法。
  • (2)SqlSessionFactoryBuilder 会根据输入流 inputStream 等信息创建XMLConfigBuilder 对象。
  • (3)SqlSessionFactoryBuilder 调用 XMLConfigBuilder 对象的parse()方法。
  • (4)XMLConfigBuilder 对象解析 XML 配置文件返回 Configuration 对象。
  • (5)SqlSessionFactoryBuilder 根据 Configuration 对象创建一个DefaultSessionFactory 对象,供客户端使用。
  • (6)SqlSessionFactoryBuilder 返回 DefaultSessionFactory 对象给客户端,由此可见,SqlSessionFactory 是根据 MyBatis 的配置文件 mybatis-config.xml 创建的。