文章目录
- 一、什么是ORM框架?
- 二、常见的ORM框架(持久层框架)
- 2.0 什么是持久化
- 2.1 Hibernate
- 2.1.1、Hibernate的使用步骤
- 2.2 mybatis
- 2.3 mybatis plus
- 2.4 jpa springdata
- 2.5 jfinal
- 三、ORM框架的优缺点?
- 3.1 优点
- 3.1.1、减少代码的重复量,提高代码的复用率
- 3.1.2、使开发更加对象化
- 3.1.3、使数据库结构文档化
- 3.1.4、ORM框架包含CRUD的API
- 3.1.5、可移植
- 3.2 缺点
一、什么是ORM框架?
ORM是Object Relational Mapping(对象——关系映射)的简称。
ORM框架是一种解决面向对象编程(Java…)与关系型数据库(MySql、Oracle、DB2、Sql Server、Access)中数据类型不匹配的技术。描述Java对象与关系型数据库里的表的映射关系,自动将Java程序中的对象持久化到数据库表中。
业务实体具有两种表现形式:在内存中表现为对象,在关系型数据库中表现为关系数据。内存中的对象通过继承、实现等方式可以存在多种关系,而数据库中的关系数据无法直接表达多对多关联和继承关系。因此一般ORM以中间件的形式存在,来实现程序对象到关系型数据库中关系数据的一一映射。
二、常见的ORM框架(持久层框架)
2.0 什么是持久化
让数据持久化。数据一般保存在内存中,但是内存中保存数据有一个缺点就是断电即失。因此起初计算机保存数据让其持久化的手段是使用JDBC或者IO流让数据以文件的形式长久存储起来。随着业务需求场景的不断变化,逐渐衍生出将数据持久保存到数据库中来实现数据的持久化。那为什么要进行数据持久化呢??1、对于计算机来说,用户的数据需要完整的被保护并且安全存储,以便用户能够安心且正常的使用程序。2、内存昂贵。同等价格的内存和硬盘,内存其大小是硬盘的小一半。
什么是持久层??以往我们还学过DAO层、service层、controller层、resposity层…一个层对应完成相应工作的代码块。持久层就是完成持久化工作的代码块。层与层之间的界限十分明显。
2.1 Hibernate
Hibernate是一个 全表映射 的ORM框架,程序员一般只需要定义好持久化对象和数据库中的表的关系映射,就可以通过Hibernate框架提供的方法完成持久层操作。
譬如:某个数据库中具有下图的两张表,此时就可以在代码中定义出与数据库中的表相同的对象,此处的相同指的是:对象的命名、对象中的成员变量。
2.1.1、Hibernate的使用步骤
1、导入相关依赖
在pom.xml文件中添加3个依赖。分别是JDBC驱动包、hibernate依赖、lombok。
2、创建 Hibernate 配置文件
在resources(外部资源)包中创建名为hibernate.cfg.xml的配置文件。
3、创建实体类
4、创建 实体类-关系映射文件(这一步很关键)
配置此文件之后,会将Java类映射成数据库中的表,这个文件会配置实体类跟数据库表的关系。
5、写好的实体类——关系映射文件注册到Hibernate配置文件
写好的实体类——关系映射文件需要注册到Hibernate配置文件中,配置的实体类——关系映射文件才会生效。将上述第二步的配置文件hibernate.cfg.xml中添加如下内容,此时即可将实体类——关系映射文件注册到hibernate配置文件中。
6、调用 Hibernate API 完成操作
2.2 mybatis
mybatis是一款优秀的持久层框架,它支持定制sql、存储过程、以及高级映射。mybatis避免了几乎所有的JDBC代码和手动设置参数以及设置结果集。 mybatis可以使用简单的xml或者注解来配置和映射原生类型、接口和Java的POJO(Plain Old Java Object 普通老式Java对象)为数据库中的记录。
mybatis的使用步骤以及更详细的资料待我后续学习后补充,同学们也可以自行搜索其他资料进行学习。
2.3 mybatis plus
mybatis plus 是基于mybatis的国内开源框架,其基于mybatis进行了进一步封装,是mybatis的增强,在mybatis的基础上不做改变,只为了简化开发、提高效率。
mybatis的使用步骤以及更详细的资料待我后续学习后补充,同学们也可以自行搜索其他资料进行学习。
2.4 jpa springdata
springdata也是一个持久层框架,实现数据持久化他既支持关系型数据库,也支持非关系数据库,springdata将我们的数据存储进行了统一,提高了开发效率,降低了学习效率。
springdata的使用步骤以及更详细的资料待我后续学习后补充,同学们也可以自行搜索其他资料进行学习。
2.5 jfinal
三、ORM框架的优缺点?
3.1 优点
3.1.1、减少代码的重复量,提高代码的复用率
当我们实现一个系统时,不使用ORM框架,而是直接使用JDBC将程序代码与数据库进行连接的话,我们可能会写特别多数据访问层的代码,譬如读取对象信息、删除数据、查找数据、保存数据、修改数据…这些代码大部分都是重复的。使用ORM框架会大大减少重复性的代码,提高开发效率,降低开发成本。ORM框架(Object Relational Mapping 对象关系映射),主要实现程序对象与关系型数据库中的关系数据的映射。
举个例子:之前写过一个servlet的项目,在这个servlet项目中,后端程序代码与数据库的连接使用的是JDBC的方式。
而在使用了springboot框架完成的项目中,后端程序代码访问数据库将变得简单。这是因为springboot框架中集成了许多ORM框架,譬如mybatis、jpa springdata…程序员在编写代码的时候可以按照自己的项目需求去选择合适自己的ORM框架添加到自己的springboot框架中。
3.1.2、使开发更加对象化
ORM框架以最基本的形式建模数据。在后端程序代码编程中,会将数据库中的一张张表映射成程序中的一个个对象,一个对象对应一张表,表中的字段与对象中的成员变量对应。
3.1.3、使数据库结构文档化
使用ORM框架时,数据库会被转换为Java程序员容易读懂的Java类(对象),如果程序员对数据库的sql语句了解较浅,此时Java程序员只需要把注意力放在他擅长的Java代码层面上。
3.1.4、ORM框架包含CRUD的API
ORM框架会将数据库中的sql语句封装成编程语言中的函数,例如create()、update()、save()、load()…,程序员可以通过函数的链式组合,生成最终的sql语句。通过这样的封装,形成了代码风格的统一性,避免了代码冗余以及不规范的特点。
3.1.5、可移植
3.2 缺点
1、通过ORM框架实现对象与关系数据的映射,可能会加重操作系统的负担,消耗内存、消耗系统性能。
2、在进行多表查询或者子查询、联合查询、条件查询…这些复杂查询时,ORM语句会变得复杂起来,对于初入编程的新手来说,难以理解。