PO,VO,DAO,BO,POJO 之间的区别你懂吗?

Posted androidstarjack

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PO,VO,DAO,BO,POJO 之间的区别你懂吗?相关的知识,希望对你有一定的参考价值。

点击上方蓝色“终端研发部”,选择“设为星标”
学最好的别人,做最好的我们

来源:网络

今天,咱来各种 OOOOOOOOOOOO

上才艺,哦不,上图...

Entity

最常用实体类,基本和数据表一一对应,一个实体一张表。

DAO(Data Access Object):数据访问对象。

是sun的一个标准j2ee设计模式的接口之一,负责持久层的操作 。这个基本都了解,Dao和上面几个O区别最大,基本没有互相转化的可能性和必要,主要用来封装对数据的访问,注意,是对数据的访问,不是对数据库的访问。

PO(Persistant Object):持久层对象。

对应数据库中表的字段,数据库表中的记录在java对象中的显示状态,最形象的理解就是一个PO就是数据库中的一条记录。

BO(business object): 业务对象。

封装业务逻辑为一个对象(可以包括多个PO,通常需要将BO转化成PO,才能进行数据的持久化,反之,从DB中得到的PO,需要转化成BO才能在业务层使用)。

形象描述为一个对象的形为和动作,当然也有涉及到其他对象的一些形为和动作。比如处理一个人的业务逻辑,该人会睡觉,吃饭,工作,上班等等行为,还有可能和别人发关系的行为,处理这样的业务逻辑时,我们就可以针对BO去处理。

再比如投保人是一个PO,被保险人是一个PO,险种信息也是一个PO等等,他们组合起来就是一张保单的BO。

DTO(Data Transfer Object):数据传输对象。

前端调用时传输;也可理解成“上层”调用时传输。

比如我们一张表有100个字段,那么对应的PO就有100个属性。但是我们界面上只要显示10个字段,客户端用WEB service来获取数据,没有必要把整个PO对象传递到客户端,这时我们就可以用只有这10个属性的DTO来传递结果到客户端,这样也不会暴露服务端表结构.

VO(Value Object): 值对象。

VO就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,这就叫VO。VO主要的存在形式就是js里面的对象(也可以简单理解成Json)

Pojo(Plain Ordinary Java Object):纯的传统意义的Java对象。

最基本的Java Bean只有属性加上属性的get和set方法。Pojo可以额转化为PO、DTO、VO。比如POJO在传输过程中就是DTO。

DO是什么?

上面这些概念基本上已经涵盖了全部的流程,DO只是跟其中一个概念相同。但是跟哪个概念相同呢?现在主要有两个版本。

  • 一个是阿里巴巴的开发手册中的定义,DO( Data Object)这个等同于上面的PO。

  • 另一个是在DDD(Domain-Driven Design)领域驱动设计中,DO(Domain Object)这个等同于上面的BO。

这几个概念很完整,我们在用的时候是必须按这个来做吗?

当然不是的,系统和系统的复杂度不同,协作水平不同,完全没有必要教条主义,这些概念全上。上哪些概念,省哪些,我给一些实际建议

1. PO这个没法省,不管叫PO还是Entity,怎么着都得有。

2. 一些工具类的系统和一些业务不是很复杂的系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行。

3. VO是可以第一个优化掉的,展示业务不复杂的可以压根儿不要,直接用DTO。

4. 这也是最重要的一条,概念是给人用的,多人协作的时候一定要保证大家的概念一致,赶紧把这篇文章转发给跟你协作的人吧。

再附一张参考图

BAT等大厂Java面试经验总结 想获取 Java大厂面试题学习资料扫下方二维码回复「BAT」就好了回复 【加群】获取github掘金交流群回复 【电子书】获取2020电子书教程回复 【C】获取全套C语言学习知识手册回复 【Java】获取java相关的视频教程和资料回复 【爬虫】获取SpringCloud相关多的学习资料回复 【Python】即可获得Python基础到进阶的学习教程回复 【idea破解】即可获得intellij idea相关的破解教程回复 【BAT】即可获得intellij idea相关的破解教程关注我gitHub掘金,每天发掘一篇好项目,学习技术不迷路!



回复 【idea激活】即可获得idea的激活方式
回复 【Java】获取java相关的视频教程和资料
回复 【SpringCloud】获取SpringCloud相关多的学习资料
回复 【python】获取全套0基础Python知识手册
回复 【2020】获取2020java相关面试题教程
回复 【加群】即可加入终端研发部相关的技术交流群
阅读更多
为什么HTTPS是安全的
因为BitMap,白白搭进去8台服务器...
《某厂内部SQL大全 》.PDF
字节跳动一面:i++ 是线程安全的吗?
大家好,欢迎加我微信,很高兴认识你!
在华为鸿蒙 OS 上尝鲜,我的第一个“hello world”,起飞!

相信自己,没有做不到的,只有想不到的在这里获得的不仅仅是技术!



喜欢就给个“在看”

以上是关于PO,VO,DAO,BO,POJO 之间的区别你懂吗?的主要内容,如果未能解决你的问题,请参考以下文章

Java中 PO VO BO DTO DAO 和 POJO 的概念及区别(图解)

[转载]java的几种对象(PO,VO,DAO,BO,POJO)解释

java中的PO VO DAO BO POJO

java术语(PO/POJO/VO/BO/DAO/DTO)

java的对象的总结:(PO,VO,DAO,BO,POJO)

java中的几种对象(PO,VO,DAO,BO,POJO)