一、 SqlSessionFactory
SqlSessionFactory
对象的实例可以通过SqlSessionFactoryBuilder
对象类获得
SqlSessionFactoryBuilder
则可以从XML配置文件或一个预先定制的Configuration
的实例构建出SqlSessionFactory
的实例。
SqlSessionFactory
是创建SqlSession
的工厂。
SqlSessionFactory
也是线程安全的
SqlSessionFactory是一个接口,
SqlSessionFactory只有两个实现类:DefaultSqlSessionFactory和SqlSessionManager。
DefaultSqlSessionFactory(基本用它)
DefaultSqlSessionFactory是SqlSessionFactory默认的实现类。这个类提供了8个方法用来获取SqlSession对象。
二、SqlSession
SqlSession是用来操作xml文件中sql语句,每次操作数据库我们都需要一个SqlSession对象
SqlSession用来和数据库中的事务进行对接的,所以SqlSession里面包含了事务隔离级别等信息。
SqlSession实例是线程不安全的,故最佳的请求范围是请求(request)或者方法(method)。
SqlSession也是一个接口,有两个实现类:DefaultSqlSession和SqlSessionManager。
- 首先
SqlSessionFactoryBuilder
去读取mybatis的配置文件,然后build一个DefaultSqlSessionFactory
,即得到SqlSessionFactory
- 获取到
SqlSessionFactory
之后,就可以利用SqlSessionFactory
方法的openSession
来获取SqlSession
对象了。- 得到
SqlSession
对象之后就可以利用SqlSession
内部的方法进行CRUD操作了。
- 注意一点,
Connection
对象是在SqlSession
对象创建之后进行CURD操作中创建的。
三、实现过程
mybatis框架主要是围绕着
SqlSessionFactory进
行的,大概创建过程如下:(1)、定义一个
Configuration
对象,其中包含数据源、事务、mapper文件资源以及影响数据库行为属性设置settings.(Configuration主要内容就是连接环境的信息,如连接池,数据库4个必要属性,事务管理方式等
)(2)、通过配置对象,则可以创建一个
SqlSessionFactoryBuilder
对象(3)、通过
SqlSessionFactoryBuilder
获得SqlSessionFactory
的实例。(4)、
SqlSessionFactory
的实例可以获得操作数据的SqlSession
实例,通过这个实例对数据库进行操作