【概念】
POJO( Plain Ordinary Java Object):POJO专指只有setter、getter、toString的简单类,包括VO/DTO/BO/DO等。
VO( View Object):显示层对象、也叫值对象,通常是Web向模板渲染引擎层传输的对象,VO就是展示用的数据。
DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象,这个传输通常指前后端之间的传输。
PO:(Persistent Object)持久化对象,对象属性与数据库字段形成映射关系,简单来说PO就是数据库中的记录,
一个PO的数据结构对应着库中表的结构,表中的一条记录就是一个PO对象,通常PO除了get,set方法之外没有别的方法,PO只是用来增删改使用。
BO( Business Object):业务对象,由Service层输出的封装业务逻辑的对象。BO就是PO的组合,简单的例子比如说PO是一条交易记录,BO是一个人全部的交易记录集合对象。
DO:(版本2:Data Object 阿里巴巴的开发手册):与数据库表结构一一对应,通过DAO层向上传输数据源对象。 == PO == Entity
DO:(版本1:Domain Object 领域驱动设计)领域对象,就是从现实世界中抽象出来的有形或无形的业务实体,可以当成BO;(Data Object)数据层对象,对象属性与数据库字段形成映射关系,可以当成PO
【VO和DTO的区别】
一个是字段不一样,VO根据需要会删减一些字段;
另一个是值不一样,VO会根据需要对DTO中的值进行展示业务的解释;
【BO和DTO的区别】
这两个的区别主要是就是字段的删减
BO对内,为了进行业务计算需要辅助数据,或者是一个业务有多个对外的接口,BO可能会含有很多接口对外所不需要的数据,因此DTO需要在BO的基础上,只要自己需要的数据,然后对外提供
在这个关系上,通常不会有数据内容的变化,内容变化要么在BO内部业务计算的时候完成,要么在解释VO的时候完成
【实际应用】
1、VO对于展示业务不复杂的可以不用,直接用DTO。
2、系统需要操作数据库时,持久化对象不管叫PO还是叫Entity,必须得有。
3、简单业务系统DTO是可以和BO合并成一个,当业务扩展的时候注意拆分就行。
4、概念是给人用的,多人协作的时候团队成员的概念要一致。
参考: