一、ORM简介 
        对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。 
        这种方案存在以下不足: 
        1.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口 
        2.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度。

ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。Java典型的ORM中间件有:Hibernate,ibatis,speedframework。 
        ORM的方法论基于三个核心原则: 
  · 简单:以最基本的形式建模数据。 
  · 传达性:数据库结构被任何人都能理解的语言文档化。 
  · 精确性:基于数据模型创建正确标准化了的结构。

二、ORM的概念 
        让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。 
        当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。

ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。 
        ORM技术特点: 
        1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 
        2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。

三、ORM的优缺点 
        ORM的缺点是会牺牲程序的执行效率和会固定思维模式。 
        从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。

在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。 
        在对对象做持久化时,ORM一般会持久化所有的属性,有时,这是不希望的。 
        但ORM是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。

转载:https://www.cnblogs.com/huanhang/p/6054908.html

ORM是什么?如何理解ORM相关推荐

  1. ORM仇恨者无法理解

    我看过无数的文章和评论(尤其是评论),它们告诉我们ORM(对象关系映射)的概念有多糟糕,糟糕和错误. 以下是通常的声明,以及我对它们的评论: "它们很慢" –映射有一些开销,但这并 ...

  2. 【ORM框架】go语言ORM框架 - gorm快速入门

    文章目录 前言 一.正确看待orm 1.什么是orm 2.常用的orm 3.orm的优缺点 4.如何正确看待orm和sql之间的关系 二.gorm入门 前言 Gorm 是 Golang 的一个 orm ...

  3. ORM框架简介和常用ORM框架

    目录 1.ORM简介 1.1什么是ORM 1.2.ORM技术的特点 3. 常用ORM框架 3.1.Hibernate 简介 优点 3.2.Mybatis 简介 功能结构 优点 1.ORM简介 1.1什 ...

  4. php的orm框架,PHP有什么ORM框架?

    对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ORM提供了实现持久化层的另一种模式,它采用映射元数据 ...

  5. mongodb orm java_基于Java的ORM框架 Mongodb-ORM

    软件介绍 mongodb-orm简介Mongodb ORM是基于java的ORM框架,简化了SDK的使用,使代码变得更清晰.简单. 与Ibatis类似,将查询.执行语句封装在xml中,与代码隔离.简称 ...

  6. java mysql orm框架_主流 Java ORM 框架有哪些?

    主流 Java ORM 框架有哪些? ORM 是 Object Relational Mapping 的缩写,译为 "对象关系映射" 框架. 所谓的 ORM 框架就是一种为了解决面 ...

  7. ORM是什么?如何理解ORM?

    一.ORM简介          对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过 ...

  8. java orm意思_ORM是什么?如何理解ORM?

    一.orm简介 对象关系映射(object relational mapping,简称orm)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,orm是通过使用描述对象和数据 ...

  9. ORM 系列:一个个人ORM映射框架

    转载:http://www.cnblogs.com/qingyuan/category/239086.html 个人ORM映射框架中的三个核心库: 实体-数据库 映射特性关系: http://www. ...

最新文章

  1. PyTorch 笔记(10)— Tensor 与 NumPy 相互转换、两种共享内存以及两者的广播法则
  2. smartform四联纸跳页问题
  3. centos php5.3 yum 安装 php53-mcrypt
  4. Thread.currentThread().getContextClassLoader().getResourceAsStream()读取配置文件
  5. SpringBoot+MyBatis搭建迷你小程序
  6. vscode输入vue自动_使用vscode,新建.vue文件,tab自动生成vue代码模板
  7. 让IE支持HTML5
  8. 你掌握垃圾分类大法了吗?图像分类1分钟轻松解决
  9. 爬虫_淘宝(selenium)
  10. CORS基础要点:关于dataType、contentType、withCredentials
  11. Java后台开发常用工具集合
  12. 关于wps公式编辑器的大括号里面空白很大
  13. Excel批注教学:一键添加多个不同批注
  14. 笔记(五)Home Assistant Lovelace UI基本用法
  15. SQLserver With As 用法
  16. AMD CPU搞编程能行吗
  17. python中检测键盘(上下左右) 代码
  18. 液化空气在中国启动生物甲烷业务;斯凯孚和ABB加大工业自动化领域合作 | 美通企业日报...
  19. 怎么准备全国计算机二级(C语言)考试?
  20. NVIDIA Jetson Xavier通过JetPack 4.1刷机教程(虚拟机版)

热门文章

  1. 第二十八期:Java线程池的四种用法与使用场景
  2. windows 和linux查看硬件信息,Linux下如何查看硬件信息?
  3. 正则表达式验证各种类型的数字
  4. java中sesion
  5. delphi 中几种多线程操作方式
  6. SQL - 将NULL设置为 NOT NULL
  7. nload实时查看linux服务器网络流量的工具
  8. FusionChart完全入门手册8
  9. CRM软件设计评测点与采集测评点
  10. maya计算机内存不足请保存,Maya内存不足不能渲染怎么优化场景?