什么是 ORM? ORM
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。
ORM
是面向对象程序设计语言和关系型数据库发展不同步时的解决方案,采用 ORM
框架后,应用程序不再直接访问底层数据库,而是以面向对象的方式来操作持久化对象,而ORM
框架则将这些面向对象的操作转换成底层的 SQL 操作。为什么说
Mybatis
是半自动 ORM框架,而 Hibenate
是全自动 ORM框架? 我们先来看看在持久层框架出现以前我们是如何对数据库进行操作的?毋庸置疑,我们都使用
JDBC(Java Database Connectivity)
对数据库进行操作。操作步骤如下:1、加载驱动程序
Class.forName(driverClass)
//加载MySql驱动
Class.forName("com.mysql.jdbc.Driver")
【半自动ORM与全自动ORM框架有什么区别()】2、获取数据库连接
DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/imooc", "root", "root");
3、创建
Statement
/ PerparedStatement
对象conn.createStatement();
conn.prepareStatement(sql);
4、操作数据库
stmt.executeQuery("...");
5、关闭连接
stmt.close();
conn.close();
Mybatis
的实现机制1、读取
Mybatis
的全局配置文件 mybatis-config.xml
2、创建
SqlSessionFactory
会话工厂3、创建
SqlSession
会话4、执行查询操作
mybatis-config.xml
文件中包括一系列配置信息,其中包括标签 Mybatis
将 SQL的定义工作独立出来,让用户自定义,而 SQL的解析,执行等工作交由 Mybatis
处理执行。Hibenate
的实现机制1、构建
Configuration
实例,初始化该实例中的变量2、加载
hibenate.cfg.xml
文件到内存3、通过
hibenate.cfg.xml
文件中的 mapping 节点配置并加载 xxx.hbm.xml 文件至内存4、利用
Configuration
实例构建 SessionFactory
实例5、由
SessionFactory
实例构建 session
实例6、由
session
实例创建事务操作接口 Transaction
实例7、执行查询操作
总结
传统的
jdbc
是手工的,需要程序员加载驱动、建立连接、创建 Statement
对象、定义SQL语句、处理返回结果、关闭连接等操作。Hibernate
是自动化的,内部封装了JDBC
,连 SQL 语句都封装了,理念是即使开发人员不懂SQL语言也可以进行开发工作,向应用程序提供调用接口,直接调用即可。Mybatis
是半自动化的,是介于 jdbc
和 Hibernate
之间的持久层框架,也是对 JDBC
进行了封装,不过将SQL的定义工作独立了出来交给用户实现,负责完成剩下的SQL解析,处理等工作。Mybatis
与 Hibernate
二者对比有什么特点?
相同点- 二者都是对优秀的持久层框架,帮助开发人员简化了开发工作
- 都是对
JDBC
进行封装 - 都是通过
SessionFactory
创建session
对象,由session
对象执行对数据库的操作语句
Mybatis
是半自动的映射持久层框架;Hibernate
是全自动的映射持久层框架Hibernate
不需要手动编写SQL,只需要操作相应对象即可,大大降低了对象与数据库的耦合性,而Mybatis
需要手动编写 SQL,可移植性Hibernate
比Mybatis
更高Mybatis
支持动态SQL,处理列表,存储过程,开发工作量相对大些;Hibernate
提供了HQL
操作数据库,如果项目需要支持多种数据库,代码开发量少,但 SQL语句的优化困难Mybaits
入门简单,即学即用;Hibernate
学习门槛相对较高
推荐阅读
- 笔记|SSM框架配置文件详解
- SSM框架|SpringMVC全局乱码过滤器、注解@RequestParam、自定义类型转换器
- SSM框架|SpringMVC回写数据方式方法
- SSM框架|SpringMVC获得请求数据类型
- 手把手整合SSM框架#yyds干货盘点#
- SSM框架|黑马程序(Springboot(2)总和)
- SSM框架|[超详细]SSM框架整合教程--入门级(图书增删改查)
- SSM框架|1000行代码读懂Spring(一)- 实现一个基本的IoC容器
- SSM框架整合的配置