[计算机基础]关于实体( 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 )两部分组成. 硬件: 从硬件基本结构上来讲,计算机是由运算器.控制器.存 ...
随机推荐
- 12-UIKit(View绘制、绘制曲线、绘制文字、贴图)
目录: 1. View绘制 2. 绘制曲线 3. 绘制文字 4. 贴图 回到顶部 1. View绘制 1.1 做出自己的视图对象 TRCell : UITableViewCell : UIView U ...
- oracle 11g 11.2.0.1 设置HuagePage导致TRC 变大 变多
最近发现diag/..../trac/ 目录下 sid_ora_xxxx.trc 文件大小为11M 而且类似文件数量很大.导致占用了8G硬盘空间 另外个同事说他的DG没有这个问题. 都一样的系统和一 ...
- pytesser图片文本识别
python图片文本识别使用的工具是PIL和pytesser.因为他们使用到很多的python库文件,为了避免一个个工具的安装,建议使用pythonxy,这个工具的介绍可参考baidu. pytess ...
- 如何查询一个库文件属于哪个rpm包
1.如果这个库文件已经存在 使用rpm命令: # rpm -qf /file/path (绝对路径) 例如: # rpm -qf /lib/libm.so.6 glibc-2.12-1.47.el ...
- OFBIZ分享:利用Nginx +Memcached架设高性能的服务
近年来利用Nginx和Memcached来提高站点的服务性能的作法,如一夜春风般的遍及大江南北,越来越多的门户站点和电子商务平台都採用它们来为自己的用户提供更好的服务体验.如:网易.淘宝.京东.凡客等 ...
- TCP连接状态具体解释
tcp状态: LISTEN:侦听来自远方的TCPport的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ...
- 多图片/文件上传 - SwfUpload/PlUpload
<文件上传利器SWFUpload使用指南> <前端上传组件Plupload使用指南>
- Python MySQLdb Mac安装遇到的问题
Mac 下使用Python 连接Mysql 数据库,使用到模块MySQLdb,各种问题都出现,搜集整理下,最后发现最关键的还是Mac 下的Python 版本问题 前置条件: 1. 已经安装mysql ...
- maven项目部署到Repository(Nexus)
目录[-] (一)下载并安装Nexus (二)配置Nexus Repository 说明: (三)在项目中配置Nexus Repository的信息 (四)发布到Nexus Repository 本文 ...
- USB基础简介
一.USB2.0 Universal Serial Bus (通用串行总线) 符合USB总线数据通信要求的通信协议 1.意义 1.易用(热插拔.即插即用) 2.易扩充(USBHub可同时操作127个 ...