POJO
是简单的 Java 对象,不包含业务逻辑、能够控制自己内部所有属性访问的 Java 对象。JavaBean
vs POJO
JavaBean | POJO |
---|---|
没有业务逻辑 | 没有业务逻辑 |
必须构造函数 | 无需构造函数 |
private 修饰成员变量 | 成员变量的修饰符无限制 |
关系图说明:
从上到下依次说明:
VO(View/Value Object)—— 视图对象
VO
就是展示用的数据,不管展示方式是网页、客户端、APP
,只要是这些数据用于展示给人看的就是 VO
。
DTO(Data Transfer Object)—— 数据传输对象
数据传输对象比较特殊,之所以将DTO
绘制在【展示层】和【业务逻辑层】之间,是因为它有两种存在形式:
Json
字串的形式存在Java
对象的形式存在微服务之间DTO
对象的模型鉴定形式:
DTO
DTO
,只能是 BO
VO vs DTO
区别一:
字段可能不一样,VO 会根据实际情况,对字段有所删减
区别二:
属性值可能不一样,VO 会根据 DTO 中对值进行展示业务对解释(比如:为不暴露数据库字段,修改属性名称、敏感字段不展示等等)
BO(Business Object)—— 业务对象
BO
就是 PO
的组合
PO
是一个交易记录,BO
就是一个人全部的交易记录集合对象PO1
是交易记录,PO2
是登录记录、PO3
是商品浏览记录、PO4
是添加购物记录,BO
就是个人网站行为对象PO(Persistent Object)—— 持久对象
简单的说 PO
就是数据库中的记录,一个 PO
的数据结构对应着库中的表结构,表中的一条记录就是一个 PO
对象。对于 PO
来说,数量是相对固定的,不会超过数据库中表的数量。等同于 Entity
,它两概念是一致的。
DO(Data/Domain Object)—— 数据/领域对象
DO
等同于 PO
DO
等同于 BO
DO vs DTO
这两个的区别主要也是字段的删减。
BO 对内,为了进行业务计算需要辅助数据或者一个业务有多个对外接口,BO 可能会含有很多接口对外所不需要的数据,因此 DTO 需要在 BO 的基础上选取自己所需的数据赋值。
PO(Entity)
这个是没有办法省略的,所有涉及数据库操作的都需要有持久化对象DTO
和 BO
可以合并为一个,当业务扩展的时候注意拆分即可