文章目录

  • bean
  • entity
  • model
  • domain
  • 总结

bean

包含的都是 JavaBean。

JavaBean 是一种 Java 语言写成的可重用组件。为写成 JavaBean,类必须是具体和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成属性。JavaBean 主要指的是一种规范,即包含一组 set 和 get 方法的类。JavaBean 可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度和维护成本。

和 Entity Bean 的区别是,JavaBean 可以包含业务逻辑代码,并且不一定与数据表对应。

entity

包含的都是实体 bean,即 Entity Bean。

entity 的意思就是实体的意思,所以也是最常用到的,entity 包中的类是必须和数据库中的表相对应的,比如说:数据库有个 user 表,字段有 bigint 类型的 id,varchar 类型的姓名,那么 entity 包中的 User 类也必须是含有这两个字段的,且类型必须一致。不能数据库存的是 bigint 类型,User 类里的对应属性是 String 类型。这样做的好处是实体类和数据库保持一致,当用到 hibernate 或 mybatie 框架来操作数据库的时候,操作这个实体类就行,写 sql 之前不需要再做数据类型的处理。

model

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

model 是 MVC 中的概念,其中的类大部分是 POJO 类,用来给 View 组件提供要展示的数据,例如,用户个人信息界面,就可以将个人有关的所有信息封装成一个 POJO 对象,再将这个对象返回给客户端,客户端就可以解析里面的数据进行展示了。

一个 POJO 类如果都是用来提供展示数据的,那么就叫 VO,如果是用来传递数据的,就叫 DTO。例如,可以在视图层中,将用户请求参数数据封装成一个 VO 对象,再封装成 DTO 对象,再调用业务层的方法,将 DTO 对象作为参数进行传递,业务层根据 DTO 的数据进行相关业务的处理,再将数据封装成 DO 对象,再调用 DAO 的相关方法,将 DO 对象作为参数传递。DAO 对象就可以根据 DO 的数据对数据库进行操作(增删改查)。

domain

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

当然,model 也是可以达到 domain 的效果。这个完全是看个人喜好和项目的整体架构,因为创建不同的 package 的作用本来也就是想把项目分成不同的层,便于管理和维护。如果你乐意,你可以创建 entity 包,然后在里面存图片,创建 images 文件夹,里面存 js,只是你自己看得懂还不够,你还要保证你的团队不会打死你。所以开发的时候,建类建包的命名规范性还是很重要的。

总结

那么三句话总结下entity、model、domain的不同:
1.entity 字段必须和数据库字段一样
2.model 前端需要什么我们就给什么
3.domain 代表一个对象模块

bean包、entity包、mode包、domain包的区别相关推荐

  1. Java:bean、entity、model、domain区别与作用

    bean 包含的都是 JavaBean. JavaBean 是一种 Java 语言写成的可重用组件.为写成 JavaBean,类必须是具体和公共的,并且具有无参数的构造器.JavaBean 通过提供符 ...

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

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

  3. Java项目 常用包的命名及理解【dao包、domain包、service包、utils包、web包、impl包】

    JavaWeb 黑马旅游网 项目结构:       目录 1.dao包 2.domain包 3.service包 4.utils包 5.web包 6.impl包 1.dao包 Dao:数据库相关操作 ...

  4. 【第一个项目开发】创建domain包中的类

    数据库表的创建 在sqlyog中使用sql语句创建表 回到eclipse 让我们先了解一下项目中的分层: 通过下图(用户注册功能)来讲解下,项目中常见的分层(分包). 一般项目中的层: view层作用 ...

  5. json:JSONObject包的具体使用(JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包)...

    1.JSONObject介绍 JSONObject-lib包是一个beans,collections,maps,java arrays和xml和JSON互相转换的包. 2.下载jar包 http:// ...

  6. idea怎么给包重命名_IntelliJ IDEA 修改包名

    1.首先将AndroidManifest的Package Name重命名(快捷键shift+F6或者右键Refctor然后Rename)这时Package Name就改变了,但是Src的文件名还没变 ...

  7. linux下 抓包工具下载,Linux下抓包工具tcpdump使用介绍

    Linux下抓包工具tcpdump使用介绍 发布时间:2012-11-30 17:11:39   作者:佚名   我要评论 在传统的网络分析和测试技术中,嗅探器(sniffer)是最常见,也是最重要的 ...

  8. 一步一步学java(7):jar包使用方法及常用jar包分类汇总(持续更新)

    java最大的特点和优势就是纯面向对象.开源,除了JDK.JRE自带的基础类库之外,还有非常多的大牛们开发了各种应用的类库(jar包),本篇主要介绍一下这些类库的使用方法,并把常用jar包分类汇总,以 ...

  9. 如何修改可运行Jar包,如何反编译Jar包

    将可运行Jar包,反编译成项目,修改代码,再次编译,打包. 需要工具:jd-gui.myeclipse 具体步骤: 1.使用jd-gui打开原始的Jar包,选择File-->Save All  ...

最新文章

  1. 为什么像王者荣耀这样的游戏 Server 不愿意使用微服务?
  2. R语言应用calibrate包的textxy函数向R原生绘图结果中添加文本标签:添加多个文本标签、改变文本标签的字体、改变文本标签的字体颜色
  3. unity人物刚体移动_Unity 刚体移动,自方向移动
  4. apidoc文档项目构建
  5. mysql 查询条件优先级_mysql条件查询and or使用实例及优先级介绍
  6. 华为鸿蒙os什么时候应用上线,华为 HarmonyOS :即日起,全新上线鸿蒙 100 问
  7. Balanced Lineup(POJ-3264)
  8. svn汉化失败解决方法
  9. CentOS安装网络驱动
  10. MapReduce概述 —— Hadoop权威指南2
  11. javaweb学习笔记(XML基础)
  12. 佳能打印服务 android,佳能打印机app
  13. request 和 response 对象的具体介绍
  14. Travelling Salesman Problem(旅行商问题)
  15. 算法设计题3.34-栈和队列-第3章-《数据结构习题集》-严蔚敏吴伟民版
  16. 浅谈第四层交换机技术及应用
  17. 耿建超英语语法---非谓语动词作同位语和定语
  18. Hadoop Yarn ResourceManager启动失败
  19. 将二维数据画成三维图形
  20. 【Pytorch学习笔记2】Pytorch的主要组成模块

热门文章

  1. mfc 弹簧_弹簧和线程:事务
  2. java 补充日期_Java 9对可选的补充
  3. sts集成jboss_与JBoss BPM Travel Agency更新了Modern BPM数据集成
  4. lucene 查询示例_高级Lucene查询示例
  5. dubbo单元测试调用_使用LocalTestServer对HTTP调用进行单元测试
  6. redis集成spring_将Redis集成到您的Spring项目中
  7. lambda ::_Lambdas中的例外:有点混乱的优雅解决方案
  8. jboss ejb_使用JBoss AS 7进行SSL加密的EJB调用
  9. java教程java自学_15必须阅读Java 8教程
  10. 使用Oracle验证外部数据