对象关系映射(ORM)

  本文主要介绍 对象关系映射(ORM) 是什么,以及它的优缺点。

一、ORM 简介

  面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的,而关系数据库则是从数学理论发展而来的,两套理论存在显著的区别。为了解决这个不匹配的现象,对象关系映射技术应运而生。

  对象关系映射(Object Relational Mapping,ORM)是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。具体地说,就是通过使用描述对象和数据库之间映射的元数据,来实现面向对象语言程序中的对象与关系数据库中数据的映射。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。它一般以中间件的形式存在。

图-1 对象关系映射功能图

  ORM 基于三个核心原则:

  • 简单性:以最基本的形式建模数据。(一个持久类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。)
  • 传达性:数据库结构被任何人都能理解的语言文档化。
  • 精确性:基于数据模型创建正确标准化的结构。

二、ORM 概念

  让我们从 O/R 开始。字母 O 起源于“对象(Object)”,而 R 则来自于“关系(Relational)”。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。

  当你开发一个应用程序的时候,如果不使用 ORM,你可能会写不少数据访问层(DAL)的代码,用来实现对数据库的保存、删除和读取等。你在数据访问层中写了很多方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。

  ORM 解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段


三、ORM 的优缺点

3.1 ORM 的优点

  ORM 具备以下优点:

  • 提高了开发效率,降低开发成本。由于 ORM 可以自动对 Entity 对象与数据库中的 Table 进行属性与字段的映射,所以我们实际可能不需要一个专用的、庞大的数据访问层。
  • 只需要面向对象编程,不需要面向数据库编写代码。
    • 对数据库的操作转化为对类的操作。
    • 不用编写各种数据库的 SQL 语句。
  • 隐藏了数据访问的细节,从而实现了数据模型与数据库的解耦,屏蔽了不同数据库操作上的差异。
    • 不用关注到底用的是什么数据库。
    • 通过简单的配置就可以轻松更换数据库,而不需要修改代码。

3.2 ORM 的缺点

  当然,ORM 也是存在缺点的,具体如下:

  • 执行效率低。自动化进行关系数据库的映射,需要消耗系统性能;执行效率低于直接编写的 SQL 语句。
  • 不够灵活,对于复杂的查询,ORM 力不从心。
  • 很有可能将全部数据提取到内存对象中,持久化所有属性,将消耗更多的内存空间。

参考
[1] http://www.cnblogs.com/wgbs25673578/p/5140482.html
[2] https://zh.wikipedia.org/wiki/对象关系映射

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值