POJO与Entity/PO、JavaBean、DTO、BO、VO的区别与联系

最近学习接触到了DTO,结合以前学习的entity、pojo与javaBean,不太清楚他们之间的区别与联系。看到许多博客,再加上最近工作中的一些感受总结了一下,希望能对你有所帮助

 
 
PO(Entity):persistent object

持久对象,我们学习java时接触到的第一个对象

1 、有时也被称为Data对象或者实体类,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。

2 、在对数据库进行insert/delet操作时使用该对象

3、该对象的类名与数据库中的表民一致,该对象的属性名与属性类型与数据库中的字段名与字段类型一致

 
DTO (TO) :Data Transfer Object

数据传输对象

1、在实际开发中一般请求时的请求参数用该对象封装

2、用在需要跨进程或远程传输时,它不应该包含业务逻辑

3、比如一个请求中的10个参数来自数据库中的3张表,就将这10个参数封装成一个DTO对象。

扫描二维码关注公众号,回复: 12902113 查看本文章

4、请求作用于数据库传输的封装的请求参数对象与数据库中返回前端的封装的返回结果对象都属于DTO,因为他们都是数据的传输对象。但实际开发中一般将返回结果对象当作VO,即使VO用于表现层

 
VO :value object/ view object

值对象 表现层对象 视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

1、在实际开发中一般请求获得响应时的响应结果用该对象封装

2 、主要对应页面显示(web页面/swt、swing界面)的数据对象。

3 、可以和表对应,也可以不,这根据业务的需要。

4、 比如一张表有100个字段,那么对应的PO就有100个属性(大多数情况下,VO内的数据来自多个表)。但view层只需显示10个字段,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的VO来传输数据到客户,这样也不会暴露服务器端表结构。

5、因为VO作用是把某个指定页面(或组件)的所有数据封装起来,而请求响应时的返回结果对象正是作用于前端页面,故实际开发中一般将返回结果对象当作VO

 
POJO :plain ordinary java object

一个特殊中间对象,可以转化为PO、DTO、VO。

1 .POJO持久化之后==〉PO(Entity)

2 .POJO传输过程中==〉DTO

3 .POJO用作表示层==〉VO

DTO 和VO都应该属于它,,如果VO的字段A在数据库中不存在(即不需要从数据库中取值),则查询的时候可以随便赋一个值给字段A。

 
JavaBean :java语言写成的可重用组件。

它的方法命名,构造及行为必须符合特定的约定:

1、这个类必须有一个公共的缺省构造函数。

2、这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。

3、这个类应是可序列化的

因为这些要求主要是靠约定而不是靠实现接口,所以许多开发者把JavaBean看作遵从特定命名约定的POJO。

简而言之,当一个Pojo可序列化,有一个无参的构造函数,使用getter和setter方法来访问属性时,他就是一个JavaBean

猜你喜欢

转载自blog.csdn.net/C2667378040/article/details/107257853