[计算机基础]关于实体( Entity )和模型( Model )
实体与模型的浅析
在日常开发过程中经常看到Entity,Model,DataModel,它们之间到底有什么异同?下面是我个人的一些理解。
一.Entity,Model,它们是什么?
维基百科描述:
实体(entity)是有可区别性且独立存在的某种事物,但它不需要是物质上的存在。尤其是抽象和法律拟制也通常被视为实体。
可见,实体就是软件系统中的研究对象。
比如:学生信息管理系统中,学生这一概念就是一个实体,它是我们软件系统的主要研究对象
数据模型(模型):
在软件工程中,数据模型是定义数据如何输入与输出的一种模型。其主要作用是为信息系统提供数据的定义和格式。数据模型是数据库系统的核心和基础,现有的数据库系统(此处所指数据库为关系数据库,非关系数据库常见的是键值对形式存储数据)都是基于某种数据模型而建立起来的。
可见数据模型这个概念更多出现在数据库系统中。它是为了把研究对象进行抽象,目的是要与数据库系统中的数据模型进行关系映射。
从实体概念可以得知,实体正是数据库系统的研究对象,所以,建模过程即为为实体进行抽象和定义,用一个数据模型对实体进行描述,此数据模型则为数据库系统提供数据支持。
把这些概念引入到计算机系统之后,在不同的业务层有着不同的体现。
二.计算机系统中的数据模型
对于数据访问(传输)层的数据模型,更多是用于定义数据交换的文档结构,即对数据交换文档进行抽象和定义。某一个模型对应某一份数据交换文档,JAVA程序设计中最常见的是JavaBean,.NET程序设计中最常见的是xxxModel,它们的作用都是相同的,即把数据交换文档使用对应的程序设计语进行定义,使得整个数据文档可以在本系统中方便的使用。需要注意的是,xxxBean和xxxModel的存在侧重于抽象建模,故常见的xxxBean和xxxModel中很少出现对数据的操作,所以我们常见的xxxBean定义中更多的是看到一些数据成员的定义,很少看到方法定义。
对于业务逻辑层的数据模型,更多是用于对系统操作对象进行抽象和封装。对于此层的数据模型而言最常见的是我们在传统软件开发过程中,通过UML建模得到的类定义。我们把系统业务进行了抽象,以类的形式对其进行描述,使得整个系统结构化,模块化,业务针对性强,并且在开发过程中更加易于修改和维护。通过各个类所生成的对象之间的相互协同工作,即可完成相关的业务需求。所以此层中的数据模型不但有类型(数据)的定义,更多的是操作(方法)的定义。因为模型内或者模型之间需要有所通讯(互操作)。这就是业务逻辑层的数据模型,它是系统详细设计的产物。
三.关于命名
Entity , Model , DataModel在开发过程中经常看到这三个命名,其实他们都是同一个概念,即数据模型的定义,是对实体抽象描述的产物。JAVA程序设计中数据访问层的数据模型一般以Bean结尾,表示它是一个JavaBean,而.NET中更多的是使用Model作为后缀,也有人以Entity作为后缀,这也就解释了为什么任何一个项目中都免不了看到这三个单词。数据访问层的数据模型对数据访问权限没有要求,甚至可以说,必须对外开放访问,所以常见的数据成员的数据访问修饰符都是public ;业务逻辑层更多是以实体本身命名,比如:Student,Blog等,它要求具有较强的封装性,不但封装变化,更要封装操作,所以对于Client而言某些数据是无法访问的。
四.总结
实体是设计时存在的概念,不应该出现在计算机系统的具体定义中,而数据模型则是计算机系统中的操作对象的抽象,他们本为一个概念 – 系统研究对象的抽象,只所处环境不同导致所有差异。
[计算机基础]关于实体( Entity )和模型( Model )的更多相关文章
- 实体entity、JavaBean、Model、POJO、domain的区别
实体entity.JavaBean.Model.POJO.domain的区别Java Bean.POJO. Entity. VO , 其实都是java 对象,只不过用于不同场合罢了. 按照 Sprin ...
- ADO.NET实体框架Entity Framework模型-基于元数据解析
上一篇简单介绍了EF的XML模型结构,在基于xml解析一文中,主要使用xml查询技术Xpath,XQuery来得到实体模型中相应信息的,由于这种方式在数据库庞大,表关系复杂的情况下,有诸 ...
- C#-MVC基础-模型(Model)、视图(View)和控制器(Controller)
搜狗百科:http://baike.sogou.com/v25227.htm?fromTitle=MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件 ...
- Java面试题 Web+EJB & Spring+数据结构& 算法&计算机基础
六.Web 部分:(共题:基础40 道,基础37 道,中等难度3 道) 122.说出Servlet 的生命周期,并说出Servlet 和CGI 的区别? [基础] 答:Web 容器加载Servlet ...
- How to: Use the Entity Framework Data Model Located in an External Assembly 如何:使用位于外部程序集中的EF数据模型
If you have a non-XAF application, and want to develop an XAF application that utilizes the same dat ...
- 第二篇:Entity Framework CodeFirst & Model 映射
前一篇 第一篇:Entity Framework 简介 我有讲到,ORM 最关键的 Mapping,也提到了最早实现Mapping的技术,就是 特性 + 反射,那Entity Framework 实现 ...
- 【再探backbone 01】模型-Model
前言 点保存时候不注意发出来了,有需要的朋友将就看吧,还在更新...... 几个月前学习了一下backbone,这段时间也用了下,感觉之前对backbone的学习很是基础,前几天有个园友问我如何将路由 ...
- cesium编程入门(九)实体 Entity
cesium编程入门(九)实体 Entity 在cesium编程入门(五)绘制形状提到过添加实体的方法,这一节聊一聊实体相关的一些内容: 先来看 Entity 的各个属性 id 唯一标志,如果没设置, ...
- Linux学习-计算机基础
Linux 学习-计算机基础 一.描述计算机的组成及其功能. 计算机系统是由硬件(Hardware)和软件(Software )两部分组成. 硬件: 从硬件基本结构上来讲,计算机是由运算器.控制器.存 ...
随机推荐
- ant 具体命令行展示代码
C:\Users\xutianhao>ant -hant [options] [target [target2 [target3] ...]]Options: -help, -h print t ...
- python读取文件内容方法
1) readline 每次读一行,返回序列 2) readlines 一次全部读出,返回序列 3) numpy 的genfromtxt,返回为np的矩阵格式 import numpy as np f ...
- 知识点3-6:HTML辅助方法
顾名思义,HTML辅助方法(HTML Helper)就是用来辅助产生HTML之用,在开发View的时候一定会面对许多HTML标签,处理这些HTML的工作非常繁琐,为了降低View的复杂度,可以使用HT ...
- JS 2016-09-30T22:04:27.5220743+08:00 转换为日期
1.转换代码 new Date(item.CreatedDate).Format("yyyy-MM-dd hh:mm") 2.需要拓展的方法 // 对Date的扩展,将 Date ...
- 解说cocos2d-x几种画图方法的用法与思考
CCRenderTexture 自己的理解 CCRenderTexture类似一张空白的“画布“,用户通过自定义笔刷(CCSprite*),在touch事件中把笔刷的移动痕迹“记录”起来,从而“画”出 ...
- 改动项目APP名字后,在真机执行报错:The provisioning profile specified in your build settings (“haotian”) has an AppI
错误提醒:The provisioning profile specified in your build settings ("haotian") has an AppID of ...
- DOM API
documentObject.documentElement 返回文档的根节点 document.documentElement; //返回<HTML><HTML>
- Oracle管道函数(Pipelined Table Function)介绍
一 概述: 1.管道函数即是能够返回行集合(能够使嵌套表nested table 或数组 varray)的函数,我们能够像查询物理表一样查询它或者将其 赋值给集合变量. 2.管道函数为并行运行,在普 ...
- ASP.NET - 网页重定向 Response.Redirect()
在网页中使用重定向,意思就是在网站中的某一个页面跳转到另一个页面. Response.Redirect(~/abc.aspx); 使用“~”的作用是可以从任意位置跳转. 如果没有“~”,那么跳转的时候 ...
- c语言,gdb
Get gdb call stack http://blog.csdn.net/zoufeiyy/article/details/1490241 Debugging with GDB - Examin ...