概述
何为ORM
ORM,全称为Object Relational Mapping,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。
ORM包含两方面内容,一是对象->关系映射,二是关系->对象映射,两者合二为一才称之为一个完整的ORM。如上所说的关系,通俗来讲就是数据库中的表。
Mybatis之于ORM
Hibernate是一个完整的ORM框架,既可以实现对象->关系映射,也可以实现关系->对象映射,我们此处不再详述。
而Mybatis并不是一个完整的ORM框架,而是一个半ORM框架,它只能实现关系->对象映射。那Mybatis如何实现关系->对象映射的呢,通俗来讲,我们只需要编写相应的sql语句,并定义"获取的表字段与对象的成员变量之间的映射关系",即可实现关系->对象映射,具体我们在后续文章中详述。
Mybatis旨在更简单更方便地完成数据库操作,减轻开发人员的工作量,相比Hibernate的使用痛苦,使用MyBatis会更加简捷轻松。
架构
功能流程架构
源码包架构
接口层
- 接口层主要对外提供增删改查功能以及动态更改配置等功能。
- 接口层主要涉及三个类SqlSessionFactory和SqlSession,这三个类都在session包下。
- 望文生义便知SqlSessionFactory为SqlSession的工厂类,并不包含其他含义。
- SqlSession类是实现所有数据库操作的API,但是并不是由开发者直接调用,这个在后边的文章中会详细叙述。
- Configuration是Mybatis中一个非常重要的类,mybatis-config.xml和mapper.xml所有参数都会解析到一个Configuration对象中,而这个Configuration对象是全局唯一的。SqlSessionFactory和SqlSession均持有这个Configuration对象,一切的操作都以Configuration包含的参数展开。
核心层
Mybatis包含两类核心配置文件mybatis-config.xml和mapper.xml,而整个核心层的入口则是这两个配置文件。
核心层主要包括以下几部分功能。
配置解析
配置解析的功能主要是针对mybatis-config.xml和mapper.xml这两类配置文件,采用DOM方式解析并映射到内存中的Configuration对象。主要包括sql语句、映射关系、插件配置、事物配置等等,具体的配置参数我们会在后边的文章中详述。
参数处理
参数处理部分主要包括单个参数,多个参数,命名参数,POJO参数,Map容器,DTD传递等处理方法。涉及类主要包括SqlCommand、MethodSignature、ParamNameResolver等。
SQL执行
Mybatis的SQL执行部分相对比较重要,通过执行器来执行SQL命令,核心类为Executor接口,执行器主要分为SimpleExecutor、BatchExecutor、ReuseExecutor等三种执行器。
结果映射
结果映射的功能是将数据库返回的结果映射为Java对象,即ORM。Mybatis的结果映射主要包括三部分,分别为一对一映射,一对多映射,多对一映射。
基础层
基础层是整个Mybatis框架的支撑部分,主要包括日志框架封装、IO操作、反射封装、异常处理、缓存处理、连接池、事物等。
温馨提示
- 如果您对本文有疑问,请在评论部分留言,我会在最短时间回复。
- 如果本文帮助了您,也请评论,作为对我的一份鼓励。
- 如果您感觉我写的有问题,也请批评指正,我会尽量修改。