ORM思想解析

转载 2018年04月17日 00:15:44

ORM

对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。 —— [ 百度百科 ]


广义上,ORM指的是面向对象的对象模型和关系型数据库的数据结构之间的相互转换。 狭义上,ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据访问接口。


什么是O,R,M?


O(对象模型):实体对象,即我们在程序中根据数据库表结构建立的一个个实体Entity。


R(关系型数据库的数据结构):即我们建立的数据库表。


M(映射):从R(数据库)到O(对象模型)的映射,可通过XML文件映射。 

如图:当表实体发送变化时,ORM会帮助我们把实体的变化映射到数据库表。

这里写图片描述

这里写图片描述

为什么使用ORM?


提高开发效率:ORM框架自动实现Entity实体的属性与关系型数据库字段的映射。CRUD的工作则可以交给ORM来自动生成代码方式实现。隐藏了数据访问细节,“封闭”的通用数据库交互,他使得我们的通用数据库交互变得简单易行,并且完全不用考虑SQL语句。大大提高我们开发效率, 这样一来也减少我们维护一个复杂 缺乏灵活性数据访问层的成本。




ORM作为是一种思想,帮助我们开发人员跟踪实体的变化,并将实体的变化翻译成sql脚本,执行到数据库中去,也就是将实体的变化映射到了表的变化。这样会给我们带来非常大的便利。但有得必有失,便利的同时也无可避免的带来了一些其他的问题:比如性能降低,复杂的查询ORM仍然力不从心等。 


不得不说,任何优势的背后都隐藏着缺点,这是不可避免的。问题在于,我们是否能容忍这些缺点。这需要结合项目的具体情况考虑使用这项技术是否利大于弊 。 


这篇博客只是介绍了ORM这种思想,具体实现这种思想的框架已有很多,Herberate,iBatis,NHerberate,,EF等,这些框架都大同小异。下篇博客会以最近项目中使用的EF为例,给大家做详细的介绍。


版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010028869/article/details/47094973

C语言实战思想

本课程不介绍C语言的语法,因此不适合无语法基础的人群。基于讲师丰富的C语言开发经验,主要介绍基于C语言的编程思想及实战技巧。本课程通过若干有代表性的小题目(菜单引擎、链表设计、排序函数设计、简易播放器),重点介绍数据算法分离、提高代码复用度、业务逻辑和显示分离、状态迁移设计等思想。
  • 2018年04月02日 13:02

ORM思想

一、ORM简介          对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通...
  • Visual0522
  • Visual0522
  • 2016-03-09 21:30:35
  • 835

Hibernate核心思想—ORM机制(一)

hibernate是一个采用ORM(Object/Relation Mapping对象关系映射)机制持久层的开源框架     其主要核心思想是面向对象,而非面向过程,而这个面向对象则主要通过ORM实...
  • wanghuan203
  • wanghuan203
  • 2012-05-14 21:45:19
  • 17614

ORM进阶之 ORM简介

1.什么是ORM     ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,...
  • zhanghongjie0302
  • zhanghongjie0302
  • 2015-08-07 20:22:24
  • 13303

django源码之ORM框架简单剖析。

近日对django的ORM框架源码看了下,发现以下特点。 完全对sql语句进行了封装---对改造,优化是不利的。线程安全,使用了线程连接池。QuerySet的堕性实现。即filter/exclude是...
  • toontong
  • toontong
  • 2009-12-21 16:51:00
  • 1742

Spring ORM数据访问——概述

介绍一下Spring中的ORMSpring框架在实现资源管理、数据访问对象(DAO)层,和事务策略等方面,支持对Java持久化API(JPA)以及原生Hibernate的集成。以Hibernate举例...
  • EthanWhite
  • EthanWhite
  • 2017-05-15 21:38:17
  • 4329

我理解的thinkphp

ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP 开发框架。它使用面向对象的开发结构和MVC模式,融合了Struts的Action和Dao思想和JSP的TagLib(标签库)、Ro...
  • qq_41846304
  • qq_41846304
  • 2018-03-19 08:14:39
  • 35

orm思想

hibernate使用orm思想对数据库进行crud操作 在web阶段学习 javabean,更正确的叫法 实体类 orm:object relational mapping,对象关系映射 文字描述...
  • qq_17585263
  • qq_17585263
  • 2017-04-02 16:24:22
  • 88

深入学习Django源码基础9 - 简单分析DjangoORM部分

现在MVC架构开发中。m部分是提供底层数据。无论是cs还是bs越来越看重数据对象的业务处理,而不是以前原生的sql得到的数据。 因此,1个通用的关系数据库字段对应对模型对象的框架就比较重要了。有了他...
  • watsy
  • watsy
  • 2013-09-07 19:33:34
  • 8153

C++ ORM 之 Hiberlite 的介绍及使用

C++ ORM 之 Hiberlite 的介绍及使用github地址: https://github.com/paulftw/hiberlite.gitHiberlite是根据 Boost.Seria...
  • ranran_5300
  • ranran_5300
  • 2017-08-31 10:05:21
  • 443
收藏助手
不良信息举报
您举报文章:ORM思想解析
举报原因:
原因补充:

(最多只允许输入30个字)