POJO(Plain Ordinary Java Object): 在本规约中,POJO 专指只有 setter/getter/toString 的
简单类,包括 DO/DTO/BO/VO 等
PO(Persistant Object)持久对象: PO比较好理解,简单说PO就是数据库中的记录,一个PO的数据结构,对应着库中表的结构,表中的一条记录就是一个PO对象,通常PO里面除了get,set之外没有别的方法,对于PO来说,数量是相对固定的,一定不会超过数据库表的数量,等同于Entity,这俩概念是一致的
DTO(Data Transfer Object):数据传输对象,Service 或 Manager 向外传输的对象。
BO(Business Object):业务对象,可以由 Service 层输出的封装业务逻辑的对象。BO是一个业务对象,一类业务就会对应一个BO,数量上没有限制,而且BO会有很多业务操作,也就是说除了get,set方法以外,BO会有很多针对自身数据进行计算的方法
Query:数据查询对象,各层接收上层的查询请求。注意超过 2 个参数的查询封装,禁止使用
Map 类来传输。
VO(View Object):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。就是展示用的数据,不管展示方式是网页,还是客户端,还是APP,只要是这个东西是让人看到的,这就叫VO
AO(Application Object): 专指 Application Object,即在 Service 层上,极为贴近
业务的复用代码。
VO和DTO的区别
主要有两个区别
一个是字段不一样,VO根据需要会删减一些字段
另一个是值不一样,VO会根据需要对DTO中的值进行展示业务的解释
DO是什么?
上面这些概念基本上已经涵盖了全部的流程,DO只是跟其中一个概念相同
但是跟哪个概念相同呢?
现在主要有两个版本
一个是阿里巴巴的开发手册中的定义
DO( Data Object)这个等同于上面的PO
另一个是在DDD(Domain-Driven Design)领域驱动设计中
DO(Domain Object)这个等同于上面的BO