栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

VO、DTO、BO、PO、DO、POJO 数据模型的理解和实际使用

文章目录

一、概念讲解二、概念澄清三、使用场景四、经验总结

一、概念讲解

VO(View/Value Object)—— 视图对象

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

BO(Business Object)—— 业务对象

PO(Persistent Object)—— 持久对象

DO(Data/Domain Object)—— 数据/领域对象

POJO(Plain Old/Ordinary Java Object)—— 以上模型的统称

POJO 是简单的 Java 对象,不包含业务逻辑、能够控制自己内部所有属性访问的 Java 对象。

二、概念澄清

JavaBean VS POJO

JavaBeanPOJO
没有业务逻辑没有业务逻辑
必须构造函数无需构造函数
private 修饰成员变量成员变量的修饰符无限制

P.S

JavaBean 其实是 POJO 的一种形式(JavaBean < POJO)

三、使用场景

网摘关系图

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

数据传输对象比较特殊,之所以将 DTO 绘制在 展示层 和 业务逻辑层 之间,是因为它有两种存在形式:

前端:它是以 Json 字串的形式存在后端:它是以 Java 对象的形式存在

微服务之间 DTO 对象的模型鉴定形式:

服务(模块)与服务(模块)之间相对独立,我们可以将数据传输对象命名为 DTO服务(模块)与服务(模块)之间不是独立,每一个都不是一个完整的业务模块,拆分可能仅仅是因为计算复杂度或者性能问题考虑拆分的问题,那么就不能将对象命名为 DTO,只能是 BO

VO(View/Value Object)—— 视图对象

VO 就是展示用的数据,不管展示方式是网页、客户端、APP,只要是这些数据用于展示给人看的就是 VO

VO VS DTO

区别一:
字段可能不一样,VO 会根据实际情况,对字段有所删减区别二:
属性值可能不一样,VO 会根据 DTO 中对值进行展示业务对解释(比如:为不暴露数据库字段,修改属性名称、敏感字段不展示等等)

PO(Persistent Object)—— 持久对象

简单的说 PO 就是数据库中的记录,一个 PO 的数据结构对应着库中的表结构,表中的一条记录就是一个 PO 对象。对于 PO 来说,数量是相对固定的,不会超过数据库中表的数量。等同于 Entity,它两概念是一致的。

BO(Business Object)—— 业务对象

BO 就是 PO 的组合

简单解释:
比如:PO 是一个交易记录,BO 就是一个人全部的交易记录集合对象复杂解释:
比如:PO1 是交易记录,PO2 是登录记录、PO3 是商品浏览记录、PO4 是添加购物记录,BO 就是个人网站行为对象

DO VS DTO

这两个的区别主要也是字段的删减。BO 对内,为了进行业务计算需要辅助数据或者一个业务有多个对外接口,BO 可能会含有很多接口对外所不需要的数据,因此 DTO 需要在 BO 的基础上选取自己所需的数据赋值。

DO(Data/Domain Object)—— 数据/领域对象

阿里开发手册
DO 等同于 PODDD 领域驱动设计
DO 等同于 BO 四、经验总结

    PO(Entity) 这个是没有办法省略的,所有涉及数据库操作的都需要有持久化对象不是非常大型的简单系统,DTO 和 BO 可以合并为一个,当业务扩展的时候注意拆分即可概念是给人用的,多人协作的时候一定要保证大家的概念一致。请勿形而上学、过度设计、一切设计都基于现有的业务规则和系统大小
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786056.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号