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,只是你自己看得懂还不够,你还要保证你的团队不会打死你。所以开发的时候,建类建包的命名规范性还是很重要的。
原文链接:https://blog.csdn.net/liaowenxiong/article/details/120324186

Java中各个各个数据实体Domain、Pojo、Do、Vo命名规范各个命名的含义:

domain

domain这个包国外很多项目经常用到,字面意思是域的意思。

DAO

DAO(Data Access Object)数据访问对象,它是一个面向对象的数据库接口,负责持久层的操作,为业务层提供接口,主要用来封装对数据库的访问,常见操作无外乎 CURD。我们也可以认为一个 DAO 对应一个 POJO 的对象,它位于业务逻辑与数据库资源中间,可以结合 PO 对数据库进行相关的操作。(不怎么用)

POJO

POJO(Plain Ordinary Java Object)简单的 Java 对象,实际就是普通的 JavaBeans,是为了避免和 EJB(Enterprise JavaBean)混淆所创造的简称。POJO 实质上可以理解为简单的实体类,其中有一些属性及其getter和setter方法的类,没有业务逻辑,也不允许有业务方法,也不能携带有connection之类的方法。POJO 是 JavaEE 世界里面最灵活的对象,在简单系统中,如果从数据库到页面展示都是 POJO 的话,它可以是 DTO;如果从数据库中到业务处理中都是 POJO 的话,它可以是 BO;如果从数据库到整个页面的展示的话,它也可以是 VO。

po

PO(Persistent Object)持久层对象,它是由一组属性和属性的get和set方法组成,最简单的 PO 就是对应数据库中某个表中的一条记录(也就是说,我们可以将数据库表中的一条记录理解为一个持久层对象),多个记录可以用 PO 的集合,PO 中应该不包含任何对数据库的操作。PO 的属性是跟数据库表的字段一一对应的,此外 PO 对象需要实现序列化接口。

bo

BO(Business Object)业务层对象,是简单的真实世界的软件抽象,通常位于中间层。BO 的主要作用是把业务逻辑封装为一个对象,这个对象可以包括一个或多个其它的对象。举一个求职简历的例子,每份简历都包括教育经历、项目经历等,我们可以让教育经历和项目经历分别对应一个 PO,这样在我们建立对应求职简历的 BO 对象处理简历的时候,让每个 BO 都包含这些 PO 即可。

vo

VO(View Object)值对象,通常用于业务层之间的数据传递,和 PO 一样也是仅仅包含数据而已,但 VO 应该是抽象出的业务对象,可以和表对应,也可以不对应,这根据业务的需要。 如果锅碗瓢盆分别为对应的业务对象的话,那么整个碗柜就是一个值对象。此外,VO 也可以称为页面对象,如果称为页面对象的话,那么它所代表的将是整个页面展示层的对象,也可以由需要的业务对象进行组装而来。

dto

DTO(Data Transfer Object)数据传输对象,主要用于远程调用等需要大量传输对象的地方,比如我们有一个交易订单表,含有 25 个字段,那么其对应的 PO 就有 25 个属性,但我们的页面上只需要显示 5 个字段,因此没有必要把整个 PO 对象传递给客户端,这时我们只需把仅有 5 个属性的 DTO 把结果传递给客户端即可,而且如果用这个对象来对应界面的显示对象,那此时它的身份就转为 VO。使用 DTO 的好处有两个,一是能避免传递过多的无用数据,提高数据的传输速度;二是能隐藏后端的表结构。常见的用法是:将请求的数据或属性组装成一个 RequestDTO,再将响应的数据或属性组装成一个 ResponseDTO.

原文:Java中各个各个数据实体Domain、Pojo、Do、Vo命名规范 - 简书 (jianshu.com)

Java:bean、entity、model、domain区别与作用相关推荐

  1. java接口和抽象类的区别和作用

    java接口和抽象类的区别和作用 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过(implements)接口的方 ...

  2. 博客 学院 下载 更多 zxy18210943475 java 和 、|| 和 | 的区别和作用

    博客 学院 下载 更多 zxy18210943475 java && 和 &.|| 和 | 的区别和作用 原创  2016年12月15日 23:58:22 标签: java 6 ...

  3. java domain_为什么Java Bean被叫做domain类?

    领域类是什么鬼?领域不是field吗? Oxford Dict中的解释是,domain源自于法语domeine,原意是estate, belonging to a lord,后来引进英语主要指an a ...

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

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

  5. 关于JAVA Bean实体类对象pojo,vo,po,dto,entity之间的区别

    关于JAVA Bean实体类对象pojo,vo,po,dto,entity之间的区别: Pojo: Pojo 普通的java对象 最基本的javaBean只有属性 加上属性的get,set方法,可以转 ...

  6. ejb java bean的区别_关于ejb:Bean,Java Bean和Enterprise Java Bean之间的区别

    本问题已经有最佳答案,请猛点这里访问. 我已经阅读了关于EJB,JavaBean的文章,但是我仍然怀疑"bean"这个词本身是什么意思呢? a)纯术语"bean" ...

  7. po vo pojo domain 区别

    POJO = "Plain Old Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean ...

  8. Java Bean Validation 最佳实践

    <h1 class="postTitle"><a id="cb_post_title_url" class="postTitle2& ...

  9. Java Bean详解

    JavaBean(是java类)是一种JAVA语言写成的可重(chong)用组件(Component).为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提 ...

最新文章

  1. VINS-mono详细解读与实现
  2. mongocollection java_mongodb与java的整合
  3. UITabBarController 笔记(三) UITabBarController 配合 UINavigationController 的使用
  4. python gps模块_一步一步使用uPyCraft学习MicroPython之GPS记录器
  5. ThreadLocal的学习
  6. 关于项目重构,知道真相的程序员眼泪笑了出来
  7. 服务器升级虚拟化,刀片服务器内置虚拟化 IBM升级服务器
  8. MySQL中序列的作用_MySql中序列的应用和总结
  9. XScale PXA270 下Linux文件传输实验
  10. 怎样用python录音_python实现录音功能(可随时停止录音)
  11. Python密码生成器
  12. 版权声明--关于本人BLOG发表的带有原创标识的文章相关
  13. 2022-2028全球与中国汽车空调冷凝器市场现状及未来发展趋势
  14. ftp server - sftpgo_v2.2.2_windows_x86_64的简单使用
  15. 2021-04-19 一万小时定律
  16. centos8安装失败 Linux dd,在RHEL 8/CentOS 8上安装Telegraf的方法
  17. 实现子弹自动向前运动 定时器 移动精灵 精灵释放
  18. java接口的的那些事1
  19. 三菱mode bus tcp通讯_plc以太网通讯模块介绍
  20. C语言strchr()函数以及strstr()函数的实现

热门文章

  1. 标日初级29~32课
  2. 什么是在职研究生同等学力申硕?
  3. javaandroid
  4. 九宫怎么排列和使用_五行八卦入九宫 阵法排布入门
  5. Tera Term怎么进行串口调试
  6. 导入properties文件地方出错
  7. Moveit! 更换运动学插件 Trac-ik
  8. zemax场曲畸变图_Zemax和光学的一些整理
  9. 高阻态是0还是1_电力电子技术基础知识你真的学会了吗?来看看吧——器件(1)...
  10. 开发基于SpringBoot和BootStrap的全栈论坛网站(一):准备阶段