ORM是什么?如何理解ORM?
一、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/Simon-Qi/p/9962902.html
ORM是什么?如何理解ORM?相关推荐
- ORM仇恨者无法理解
我看过无数的文章和评论(尤其是评论),它们告诉我们ORM(对象关系映射)的概念有多糟糕,糟糕和错误. 以下是通常的声明,以及我对它们的评论: "它们很慢" –映射有一些开销,但这并 ...
- 【ORM框架】go语言ORM框架 - gorm快速入门
文章目录 前言 一.正确看待orm 1.什么是orm 2.常用的orm 3.orm的优缺点 4.如何正确看待orm和sql之间的关系 二.gorm入门 前言 Gorm 是 Golang 的一个 orm ...
- ORM框架简介和常用ORM框架
目录 1.ORM简介 1.1什么是ORM 1.2.ORM技术的特点 3. 常用ORM框架 3.1.Hibernate 简介 优点 3.2.Mybatis 简介 功能结构 优点 1.ORM简介 1.1什 ...
- php的orm框架,PHP有什么ORM框架?
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ORM提供了实现持久化层的另一种模式,它采用映射元数据 ...
- mongodb orm java_基于Java的ORM框架 Mongodb-ORM
软件介绍 mongodb-orm简介Mongodb ORM是基于java的ORM框架,简化了SDK的使用,使代码变得更清晰.简单. 与Ibatis类似,将查询.执行语句封装在xml中,与代码隔离.简称 ...
- java mysql orm框架_主流 Java ORM 框架有哪些?
主流 Java ORM 框架有哪些? ORM 是 Object Relational Mapping 的缩写,译为 "对象关系映射" 框架. 所谓的 ORM 框架就是一种为了解决面 ...
- ORM是什么?如何理解ORM
一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过 ...
- java orm意思_ORM是什么?如何理解ORM?
一.orm简介 对象关系映射(object relational mapping,简称orm)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,orm是通过使用描述对象和数据 ...
- ORM 系列:一个个人ORM映射框架
转载:http://www.cnblogs.com/qingyuan/category/239086.html 个人ORM映射框架中的三个核心库: 实体-数据库 映射特性关系: http://www. ...
最新文章
- Flash Builder 4快速入门----学习笔记
- 检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)
- 用TableView写带特效的cell
- js get/set Cookie
- java8新特性_乐字节-Java8新特性-函数式接口
- 《ASP.NET Core 微服务实战》-- 读书笔记(第1章 、第2章)
- Android开发系列之屏幕密度和单位转换
- 行列式的计算机应用论文结论,【计算机应用论文】建筑耗能计算机模拟分析(共3654字)...
- eclips图片为什么显示不了_为什么要定制工业平板电脑?定制工业平板电脑的七大理由...
- 计算机内存只认4,为什么电脑的8GB内存只有7.45GB可用?
- checkbox在ftl文件的使用
- python3下载远程代码并执行
- maven parent 覆盖_Maven 最佳实践之 · 一个好的 parent 依赖基础
- javascript实现数独解法
- 【记录读论文时遇到的一些算法2】—— Occupancy Grid Map
- 助推建筑业数字化转型升级,紫光云再出招
- 2022全新好玩的恶搞屁声音小程序源码+UI不错
- html dom节点源码,HTML DOM HTML DOM 节点 - 闪电教程JSRUN
- SpringMVC学习笔记:springMVC中相关细节
- 机器学习岗位的面试准备——总结1
热门文章
- linux内核计算list的长度,Linux内核通用链表 linux/list.h阅读
- python列表操作程序_Python入门篇(三)之列表
- 自制简单的小型Linux,自制小型Linux系统
- 当面试官问我————为什么String是final的?
- html 自定义打印模板,HTML+CSS入门 自定义模板详解
- matlab变参传函,什么是传递函数的增益
- c语言sgoto 标志位,如何在Go中设置TCP数据包的“不分段”标志位?(How to set “don't fragment” flag bit for TCP packet in Go?)...
- js清空文本框的值_一个Vue.js实例控制字变大变小,含样式操作,flex布局。「603」...
- PostgreSQL 简单的查询
- Leetcode-2 两数相加【c语言】