ORM模型介绍(ORM Model)- CSFramework.WebApi服务端框架


ORM模型介绍(ORM Model)

CSFramework.WebApi服务端开发框架   WebApi后台框架  WebApi框架 原创软件@csframework.com

 

什么是ORM?

对象关系映射(Object Relational Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于S Q L 的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法 。O R M 技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

用于实现面向对象编程语言里不同类型系统的数据之间的转换:

  • ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射
  • ORM可以解决数据库与程序间的异构性,比如:在Java中我们使用String表示字符串,而Oracle中可使用varchar2,MySQL中可使用varchar,SQLServer可使用nvarchar。

ORM模型主要作用是传递给SQL命令生成器自动生成三种SQL脚本(INSERT/UPDATE/DELETE),开发人员不需要编写冗余复杂的SQL语句。若使用静态类(Static Class)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是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。

C/S框架网|原创精神.创造价值.打造精品

 

版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
C/S框架网
上一篇:CSFramework.WebApi支持多种常用数据库(Mssql/MySQL/Oracle)
下一篇:CSFramework.WebApi后端开发框架服务器宿主承载方式
评论列表

发表评论

评论内容
昵称:
关联文章

ORM模型介绍ORM Model)- CSFramework.WebApi服务框架
Web后开发框架WebApi主流开发框架介绍
CSFramework.WebApi框架快速搭建后服务支持APP、B/S、C/S、微信小程序、公众号、Web客户
CSFramework.WebApi服务开发框架平台成功案例汇总
CSFramework.WebApi服务处理流程与机制
CSFramework.WebApi框架 - 用户请求类型 (User Request)参数模型
微信小程序后框架 | C# ASP.NET服务WebApi快速开发框架平台
.Net后框架|WebApi服务开发框架|C/S框架网原创作品
CSFramework WebApi服务框架开发微信支付接口成功案例
CSFramework WebApi服务框架开发微信支付接口成功案例
Asp.Net开源服务框架,WebApi框架标准版
Model - dt_Car 车辆管理实体模型
Model - tb_PFPlan 生产计划实体模型
WebApi框架服务框架开发微信小程序订阅消息接口
CSFramework.WebApi服务框架成功案例-建行底层支付系统+i蜜书收银助手
CSFramework.WebApi用户请求对象模型
VS解决方案与目录结构 - CSFramework.WebApi框架
CSFramework.WebApi服务开发框架成功案例-对接三方支付平台连连支付
CSFramework WebApi服务框架成功案例-建行底层支付系统+i蜜书收银助手客户
Demo调用WebApi接口 - CSFramework.WebApi开发框架