什么是ORM

什么是ORM?

[ORM的全称是Object Relational Mapping,即对象关系映射。它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将这些对象组织起来,实现系统业务逻辑的过程。]

什么是ORM?
对象角色建模(ORM)提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则:

· 简单。以最基本的形式建模数据。
· 传达性。数据库结构被任何人都能理解的语言文档化。
· 精确性。基于数据模型创建正确标准化了的结构。

典型地,建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发信息模型。建模者必须能够用非技术企业专家可以理解的术语在概念层次上与数据结构进行通讯。建模者也必须能以简单的单元分析信息,对样本数据进行处理。ORM专门被设计为改进这种联系。

规则表达式

ORM把应用程序世界表示为具有角色(关系中的部分)的一组对象(实体或值)。ORM有时也称为基于事实的建模,因为它把相关数据描述为基本事实。这些事实如果分割为再小的事实就会丢失信息。
简单事实的一些例子包括:

· 人有电话
· 人住在某个地方
· 人生于某个日期
· 人在某个日期被雇佣

这些事实相应的ORM模型如下:

 









图 1. 对象角色模型

  图中的圆代表对象;矩形代表论断。在ORM中,象在逻辑中一样,一个论断只是带有对象洞的语句。箭头和点代表系统中的约束。

例如,在"人有电话"这个事实的诊断上的箭头可以翻译为:

有可能某个人有多于一个电话,并且至少有一个人有电话。

在"人生于某个日期"这个事实中,在论断上的箭头与连接对象与论断的点的结合表明:

每个人确切地出生于一个日期。

与 ER的比较

实体关系(ER)是另一种类型的数据库建模。ORM模型的简单性与ER相应部分的比较:










图 2. 实体关系

ORM以简单对象和论断的形式描述企业事实,而实体关系方法论以术语实体(拥有属性并参与关系)描述世界。在图1的ORM例子中,人,电话,地址和日期都表示为扮演有相互联系的角色的对象。在ER例子中,人是一个实体,它由属性:地址和电话进行描述。

例如,如果要把地址分解为街道,城市,州,ZIP码,那么必须把地址改变为具有相应属性的实体类型,结果会改变人与地址间的关系。尽管在上面的ORM 模型中表示的约束也可以在ER中表示,但只要向模型中增加节点,或编写应用程序代码对模型进行补充,就可以表示其它约束。

ORM的优点

ORM提供的不只是描述不同对象间关系的一个简单而直接的方式。从示例中,可以看出ORM还提供了灵活性。使用ORM创建的模型比使用其它方法创建的模型更有能力适应系统的变化。另外,ORM允许非技术企业专家按样本数据谈论模型,因此他们可以使用真实世界的数据验证模型。因为ORM允许重用对象,数据模型能自动映射到正确标准化的数据库结构。

ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。

数据库生成和遍历引挚

象所有优秀的模型方法一样,ORM也不只是一个概念。它包含了不同的设计过程以帮助建模者映射概念的和逻辑的模型,或使用转换引挚在这些模型间转换。

ORM模型也能够自动地映射到大多数流行的关系型数据库所实现的数据库结构。检查前面的例子,ORM模型能自动生成ER图表或逻辑模型(可以翻译为SQL 代码,并适用于所选择的数据库)。

总结
利用非技术企业专家的知识对于确保应用程序满足企业需求是重要的。ORM,Visual Studio .NET的一个特性,是一个最初的、易于使用的概念性数据模型方法。通过使用不只是只有数据库专家才能理解的语言,ORM使那些充分理解了企业对应用程序需求的人能直接参与设计。

ORM还支持完全的遍历引挚,因此一旦定义了企业需求,它们就能迅速的转化为逻辑和物理数据库图表。使用ORM,组织可以提高应用程序开发的效率,确保企业需求能被正确交付。


一、ORM简介 
   对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。
这种方案存在以下不足:
    1.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口
    2.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度
 
    ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。Java典型的ORM中间件有:Hibernate,ibatis,speedframework。
    ORM的方法论基于三个核心原则:
· 简单。以最基本的形式建模数据。 
· 传达性。数据库结构被任何人都能理解的语言文档化。
· 精确性。基于数据模型创建正确标准化了的结构。
 
二、ORM的概念
   ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。
   ORM技术特点:
     1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。
     2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。
 
三、ORM的优缺点
这是我从别人的blog上copy过来的,讲的非常贴切。
ORM的缺点是会牺牲程序的执行效率和会固定思维模式。
从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。
在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据 库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进 行过滤和加工处理,这样就容易产生性能问题。
在对对象做持久化时,ORM一般会持久化所有的属性,有时,这是不希望的。
但ORM是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。
原文地址:https://www.cnblogs.com/yangjunwl/p/933859.html