MyBatis核心三大对象以及生命周期和作用域

三大对象:

1、SqlSessionFactoryBuilder:负责构建SqlSessionFactory,并且提供了多个build()方法的重载

2、SqlSessionFactory:创建SqlSession实例的工厂

3、SqlSession:用于执行持久化操作的对象

三大对象获取的步骤:

(1)每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为核心。

(2)首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件的实例构建该对象。

(3)然后获取SqlSessionFactory对象,该对象实例可以通过SqlSessionFactoryBuilder对象来获得。

(4)有了SqlSessionFactory对象之后,通过SqlSessionFactory对象的openSession()方法就可以获取SqlSession实例,SqlSession对象中完全包含以数据库为背景的所有执行SQL操作的方法。

三大对象的声明周期和作用域:

《1》SqlSessionFactoryBuilder的最大特点是:用过即丢。一旦创建了SqlSessionFactoryBuilder对象之后,这个类就不再需要存在了,因此SqlSessionFactoryBuilder的最佳范围是存在方法体内,也就是局部变量而已。

《2》SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在,因此SqlSessionFactory的最佳作用域是Application(单例模式)。

《3》SqlSession对应着一次数据库回话。在每次访问数据库时都需要创建它,每个线程都有自己的SqlSession实例,SqlSession实例不能被共享,也不是线程安全的。因此最佳的作用域范围是request作用域或者方法体作用域内。

MyBatis核心接口和类
  SqlSessionFactoryBuilder:

SqlSessionFactoryBuilder负责构建SqlSessionFactory。它的最大特点是:用过即丢。一旦创建了SqlSessionFactory对象之后,这个类就不需要存在了,因此SqlSessionFactoryBuilder的最佳范围就是存在于方法体内,也就是局部变量而已。

SqlSessionFactory:

SqlSessionFactory简单的理解就是创建SqlSession实例的工厂。所有的MyBatis应用都是以SqlSessionFactory实例为中心,SqlSessionFactory的实例可以通过SqlSessionFactoryBuilder对象来获得。有了SqlSessionFactory实例后,就可以通过SqlSessionFactory实例的openSession()方法来获取SqlSession实例。

SqlSessionFactory对象一旦创建,就会在整个应用运行过程中始终存在。没有理由去销毁或再创建它,并且在应用运行中也不建议多次创建SqlSessionFactory。因此SqlSessionFactory的最佳作用域是Application,即随着应用的生命周期一同存在。

SqlSession:

SqlSession是用于执行持久化操作的对象,类似于JDBC中的Connection。它提供了面向数据库执行SQL命令所需的酥油方法,可以通过SqlSession实例直接运行已映射的SQL语句。

SqlSession对应着一次数据库会话,所以每次访问数据库时都需要创建它。创建SqlSession的地方只有一个,就是SqlSessionFactory实例的openSession()方法。(但一个SqlSession会话也可以执行多次SQL)

SqlSession的两种使用方式:直接通过SqlSession实例来执行已映射的SQL语句、基于mapper接口方式操作数据。

你可能感兴趣的:(mybatis,ssm框架,框架)