先用三句话来简单描述一下他们各自的特点:

名称

特点

entity

字段必须和数据库字段一样

model

前端需要什么我们就给什么

domain

比较少用,代表一个对象模块

1.entity实体

entity就是实体的意思,也是我们最常用到的。entity包中的类是必须和数据库相对应的。比如说:数据库有个user表,字段有long类型的id,string类型的姓名,那么entity中的user类也必须是含有这两个字段的,且类型必须一致。不能数据库存的是long类型,user类里的属性是string类型。

这样做的好处是保持实体类和数据库保持一致,另外,当用到hibernate或mybatie框架来操作数据库的时候,操作这个实体类就行,写sql之前不需要再做数据格式处理。

2.model模型

model大家不陌生,都知道是模型的意思,当用model当包名的时候,一般里面存的是实体类的模型,一般是用来给前端用的。比如:前端页面需要显示一个user信息,user包含姓名,性别,年龄,这些信息存在数据库的时候,姓名直接存姓名,但是性别和年龄一般会用数据字典的编号存到数据库,比如:1代表男,2代表女,数据库存的就是1或2,如果用entity的话,把1、2给前端,前端就不知道是什么玩意,就算前端知道1代表男,2代表女,写了一个js判断数据处理,后来数据库变动了,1代表女,2代表男,前端的js又需要重新写,很显然这样不利于维护。所以就需要model来解决,后台从数据库取了数据转化为前端需要的数据直接传给前端,前端就不需要对数据来处理,直接显示就行了。还有一种情况,数据库里面的user表字段有十个,包含姓名,qq,生辰八字乱七八糟的等等,但是前台页面只需要显示姓名,如果把entity全部传给前台,无疑传了很多没用的数据。这时候model就很好的解决了这个问题,前台需要什么数据,model就包含什么数据就行了。

3.domain域

domain这个包在国外很多大型项目经常用到,字面意思是域的意思。它的范围就有点广了,比如一个商城的项目,商城主要的模块就是用户,订单,商品三大模块,那么这三块数据就可以叫做三个域,domain包里就是存的就是这些数据,表面上这个包和entity和model包里存的数据没什么区别,其实差别还是挺大的,特别是一些大型的项目。比如一个招聘网站的项目,最重要的对象就是简历了,那么简历是怎么存到数据库的呢,不可能用一张表就能存的,因为简历包含基本信息和工作经验,项目经验,学习经验等。基本信息可以存在简历表,但是涉及到多条的就不行,因为没人知道有多少条工作经验,项目经验,所以必须要单独建工作经验表和项目经验表关联到简历基本信息表。但是前台页面是不关心这些的,前台需要的数据就是一个简历所有信息,这时就可以用到domain来处理,domain里面的类就是一个简历对象,包含了简历基本信息以及list的工作经验,项目经验等。这样前端只需要获取一个对象就行了,不需要同时即要获取基本信息,还要从基本信息里面获取工作经验关联的简历编号,然后再去获取对应的工作经验了。

当然,如果用model的话也是可以达到domain的效果的。这个完全是看个人喜好和项目的整体架构,因为创建不同的package的作用本来也就是想把项目分成不同的层,便于管理和维护。如果你乐意,你可以创建entity包,然后在里面存图片,创建images文件夹,里面存js。你自己能看懂就行,前提是如果是团队开发的话能保证别人不打你。这个和语言一个道理,你在200年前和英国人说:private void set(int age),人家说:滚犊子;现在你这样说,人家就知道是java语言了。能被人们通用的才叫语言,你说的别人听不懂那只能算是鸟语。所以开发的时候,建类建包的命名规则规范性还是很重要的。

entity、model和domain三者区别相关推荐

  1. entity、model、domain三个包之间的区别

    (1).entity(实体) entity的意思就是实体的意思,所以也是最常用到的,entity包中的类是必须和数据库相对应的,比如说:数据库有个user表,字段有long类型的id,string类型 ...

  2. 说说entity、model、domain是什么东西?

    实体entity.JavaBean.Model.POJO.domain的区别 java项目开发中,把包分门别类就是为了清晰明了,后期可以更好的维护: 包的取名一定要通俗易懂,见名知意: 只有大家都能简 ...

  3. Java中POJO、VO、DTO、PO、Entity、domain的区别

    Java中POJO.VO.DTO.PO.Entity的区别 在看一些实际的项目的源码的时候,我们会发现POJO.VO.DTO.PO.Entity.domain的区别,那它们分别是什么呢,与我们学习Ja ...

  4. Java 之String、StringBuffer 和 StringBuilder 三者区别介绍

    String:字符串常量,字符串长度不可变,StringBuffer:字符串变量(Synchronized,即线程安全),StringBuilder:字符串变量(非线程安全). String Stri ...

  5. 静态方法与非静态方法的区别_程序员必看之ThinkPHP5中model与Db的区别

    在ThinkPHP5的使用过程中,很多使用者刚接触到数据库操作时,不能很好调用相关的方法进行数据库的交互.下面就分享一下ThinkPHP5中Db与模型的区别 关于db与model的选择 使用DB方式是 ...

  6. C# 总结const、 readonly、 static三者区别:

    总结const. readonly. static三者区别: (有人问我,看似简单,我也没能立刻回答出来,总结一下,分享一下.) const:静态常量,也称编译时常量(compile-time con ...

  7. vue:model和v-model的区别

    v-model: 你可以用 v-model 指令在表单 <input>.<textarea> 及 <select> 元素上创建双向数据绑定.它会根据控件类型自动选取 ...

  8. JavaScript中String的slice(),substr(),substring()三者区别

    JavaScript中String的slice(),substr(),substring()三者区别 共同之处 从给定的字符串中截取片段,并返回全新的这片段的字符串对象,且不会改动原字符串. 具体不同 ...

  9. Model和ModelMap的区别,以及背后那个男人~

    Model和ModelMap的区别 在彻彻底底的理解他们之前,首先了解复习一下java.util.Map接口.它有四个实现类,分别是 HashMap ,Hashtable ,LinkedHashMap ...

最新文章

  1. 高糊图片可以做什么?
  2. 企业级java b2bc商城系统开源源码二次开发(二十一)springboot集成JMS
  3. 汇编语言——十六进制数据前加0规则
  4. c语言比较当前日期大小,C语言判断两个日期只差的方法
  5. php输出12个月,php获取12个月内的开始时间和结束时间
  6. 有关OPenCV的几个库函数的使用
  7. iOS 3DTouch
  8. mysql 抛出Lock wait timeout exceeded; try restarting transaction异常
  9. 芒果数据库备份与还原
  10. ECharts 实现地图功能
  11. 51单片机 矩阵键盘
  12. Egoist (罪恶王冠) | mmd动作+镜头下载
  13. 判断new数据初始化_拔剑-浆糊的传说_新浪博客
  14. vue 身份证格式校验
  15. 严重: Compilation error org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
  16. PHP语言的动态特性-Going dynamic with PHP
  17. proxy chains 配置
  18. 豆腐西施新传:大学毕业生也去磨豆腐
  19. 西瓜视频稳定性治理体系建设二:Raphael 原理及实践
  20. Lwip网口接口netif

热门文章

  1. MIT自然语言处理第一讲:简介和概述(第二部分)
  2. 中国计算机学会CCF推荐国际学术会议和期刊目录(PDF版,2015年)
  3. 最小平方误差判别 MSE
  4. TCP 的那些事儿(上)
  5. Docker 网络之进阶篇
  6. 深度操作系统 15 发布 —— 不忘初心,追逐梦想
  7. [Go] Cookie 使用简介
  8. Android listview与adapter用法
  9. Intellij Idea 创建Web项目入门(一)
  10. Android官方网站