MyBatis的核心组件和生命周期

1 核心组件:
(1)、SqlSessionFactoryBuilder(构造器):它会根据配置或者代码来生成SqlSessionFactory,采用的是分布构建的Builder模式。
(2)、SqlSessionFactory(工厂接口):依靠它来生成SqlSession,使用的是工厂模式。
(3)、SqlSession(会话):一个既可以发送SQL执行返回结果,也可以获取Mapper的接口。
(4)、SQL Mapper(映射器):MyBatis新设计存在的组件,它由一个Java接口和XML文件(或注解)构成,需要给对应的SQL和映射规则。它负责发送SQL去执行,并返回结果。
备注:无论是映射器还是SqlSession都可以发送SQL到数据库执行。


2 SqlSessionFactory 说明
(1) 使用MyBatis首先是使用配置或者代码去生产SqlSessionFactory,而MyBatis提供了构造器SqlSessionFactoryBuilder。它提供了一个类
org.apache.ibatis.Configuration作为引导,采用的是Builder模式。具体的分布在Configuration类里面完成的。
(2) 生成:SqlSessionFactory有两种方式:
        1、通过读取配置XML文件的形式生成。
        2、通过Java代码的方式生成。
(3)XML构建SqlSessionFactory:在mybatis-config.xml里面配置相关信息(怎么配置这里不再赘述),
       然后通过SqlSessionFactoryBuilder的Builder方法创建SqlSessionFactory。
       使用代码创建SqlSessionFactory:略(由于不常用,这里直接忽略,想研究的可以查看相关文档)。
(4) SqlSessionFactory是一个接口 它的实现类:
    SqlSessionManager:使用多线程的环境中,它的具体实现依靠DefaultSessionFactory。
    DefaultSessionFactory:具体都是靠它来实现。
(5) 作用:MyBatis的应用都是以一个SqlSessionFactory的实例为中心的,它的唯一作用是生产MyBatis的核心接口对象SqlSession。使用单例模式来处理它。

3 SqlSession
在MyBatis中,SqlSession是其核心的接口。在MyBatis中有两个实现类,DefaultSqlSession和SqlSessionManager。
DefaultSqlSession是单线程使用的,而SqlSessionManager在多线程环境下使用。
作用:它相当于JDBC中的Connection对象,代表着一个连接资源的启用
  (1)获取Mapper接口
  (2)发送SQL给数据库
  (3)控制数据库事务

4 映射器
映射器是MyBatis中最重要、最复杂的组件,它由一个接口和对应的XML文件(或注解)组成。
它可以配置以下内容:
    1、描述映射规则。
    2、提供SQL语句,并可以配置SQL参数类型、返回类型、缓存刷新等信息。
    3、配置缓存。
    4、提供动态SQL。
作用:就是将SQL查询到的结果映射为一个POJO,或者将POJO的数据插入到数据库中,并定义一些关于缓存等重要内容。
备注:MyBatis运用了动态代理的方式使得接口能运行起来。

5 生命周期:

(1)、SqlSessionFactoryBuilder作用是创建SqlSessionFactory,创建成功后,它就失去了作用。所以它只存在创建SqlSessionFactory中。
(2)、SqlSessionFactory它可以被认为是一个数据库连接池,它的作用是创建SqlSession接口对象。所以它的生命周期存在于整个MyBatis的应用之中,所以一旦被创建了,就要长期保存它,知道不再使用MyBatis应用。
(3)、SqlSession相当于一个数据库的连接(Connection对象),你可以在一个事务里面执行多条SQL,然后通过它的commit、rollback等方法,提交或者回滚事务。所以它存活在一个业务请求中,处理完整个请求后,应该关闭连接归还给连接池。
(4)、Mapper它是一个接口,它由SqlSession创建,所以它的生命周期小于等于SqlSession,因为它由SqlSession关闭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值