什么是 ORM

对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。其主要作用是在关系型数据库和业务实体对象之前作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的 SQL 语句打交道,只需简单的操作对象的属性和方法。而达到的效果就是我们直接创建实体对象,就在数据库对应的表中添加了一条记录,我们操作这个实体对象的属性和方法,就完成了对数据库中对应的表的增删改查。

ORM 概述,优缺点,及常用框架介绍

为什么会出现 ORM 思想

几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。

以 MVC 分层模式为例。Model 作为数据承载实体,在用户界面和业务逻辑层之间,数据以面向对象的形式传递;而当我们需要通过 Controller 分发请求把数据持久化的时候,我们就遇到了内存中的对象如何持久化成关系数据库中存储的一条实际数据记录的问题。

面向对象是从软件工程的基本原则,即封装,继承,多态的基础上发展起来的;而关系型数据库则是从数学理论的基础上发展起来的,两者之间是不匹配的。所有就出现了 ORM 以项目中间件的形式实现数据在不同场景下的数据关系映射。。而对象关系映射就是这样一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。在其基础上诞生很多对象和关系之间的映射框架,也即 O/R mapping 技术。

ORM 的优点

第一:隐藏了数据访问细节。“封闭”的通用数据库交互是 ORM 的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑 SQL 语句。

第二:ORM使我们构造固化数据结构变得简单易行。在 ORM 诞生前,我们需要将我们的对象模型转化为一条一条的SQL语句,通过直连或是 DB helper 在关系数据库构造我们的数据库体系。而现在,基本上所有的 ORM 框架都提供了通过对象模型构造关系数据库结构的功能。

ORM 的缺点

第一:无可避免的,自动化意味着映射和关联管理,代价是牺牲性能。现在的各种 ORM 框架都在尝试使用各种方法来减轻性能上的损失,如懒加载技术、缓存技术等。

第二:面向对象的查询语言作为一种数据库与对象之间的过渡,虽然隐藏了数据层面的业务抽象,但并不能完全的屏蔽掉数据库层的设计,并且无疑将增加学习成本.

第三:ORM 难以实现过于复杂的查询。虽然可以实现,但是需要花费很大的代价。

常用的 ORM 框架

Hibernate

Hibernate 是一个持久化框架和 ORM 框架,持久化和 ORM 是两个有区别的概念,持久化注重对象的存储方法是否随着程序的退出而消亡,ORM 关注的是如何在数据库表和内存对象之间建立关联。

Hibernate 使用 POJO 来表示 Model,使用 XML 配置文件来配置对象和表之间的关系,它提供了一系列 API 来通过对对象的操作而改变数据库中的过程。

Hibernate 更强调如何对单条记录进行操作,对于更复杂的操作,它提供了一种新的面向对象的查询语言:HQL。

MyBatis

MyBatis是另外一种 ORM 框架,和 Hibernate 擅长操作单条记录不同,MyBatis是基于 SQL 模板的,可以说,MyBatis 每次和数据库进行操作时,都有明确的 SQL 语句,而这些 SQL 语句,就是我们定义在配置文件中的。

相关文章:

  • 2021-11-11
  • 2022-12-23
  • 2021-10-22
  • 2021-06-03
  • 2021-10-24
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-03
  • 2021-08-05
  • 2021-11-19
  • 2021-10-02
  • 2022-01-13
  • 2021-04-02
相关资源
相似解决方案