真的有必要定义VO,BO,PO,DO,DTO吗?

简介: 今天给大家带来一篇关于VO,BO,PO,DO,DTO的文章,阅读完这篇文章之后,希望大家对VO,BO,PO,DO,DTO有自己的见解。

1. 概念

在讲具体的概念之前,我们先简单的讲一讲我们MVC开发模式。


MVC的简单定义:


M层负责与数据库打交道;


C层负责业务逻辑的编写;


V层负责给用户展示(针对于前后端不分离的项目,不分离项目那种编写模版的方式,理解V的概念更直观)。


而我们今天要说的VO,BO,PO,DO,DTO呢,就是穿梭在这M、V、C层之间的实体传输对象。


1.VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。

2.DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,更符合泛指用于展示层与服务层之间的数据传输对象。

3.BO(Business Object):业务对象,把业务逻辑封装为一个对象,这个对象可以包括一个或多个其它的对象。

4.PO(Persistent Object):持久化对象,它跟持久层(通常是关系型数据库)的数据结构形成一一对应的映射关系,如果持久层是关系型数据库,那么,数据表中的每个字段(或若干个)就对应PO的一个(或若干个)属性。

5.DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。

2. 有必要用吗?

项目中真的有必要定义VO,BO,PO,DO,DTO吗?


还是要理性看待这个问题,要看我们项目“目的地”是什么。


如果项目比较小,是一个简单的MVC项目,又是单兵作战,我不建议使用VO,BO,PO,DO,DTO,直接用POJO负责各个层来传输就好,因为这种项目的“目的地”是快速完成。


而我们更多的时候,是持续迭代的团队协作项目,这个时候我们就建议用VO,BO,PO,DO,DTO,而且团队内要达成共识,形成一个标准规范。


业务复杂,人员协同性要求高的场景下,这些规范性的东西不按着来虽然不会出错,程序照样跑,但是遵守规范会让程序更具扩展性和可读性;

让类语义更明确,很容易知道类的含义;

其实就是提升项目的可扩展性、可维护性与可阅读性。

提升这些性能的尽头是经济效益。


3. 总结

这篇文章很短,最后稍微总结一下,不管用哪种方式,只要团队内定义好一种适应的协同规范就行。


没有一个绝对好与绝对坏的方式方法。


团队规范的尽头能提升项目的可扩展性、可维护性与可阅读性,从而降低bug率。


另附这些概念命名规范:


数据对象:xxxPO,xxx即为数据表名。(也可DO) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。

展示对象:xxxVO,xxx一般为网页名称。

业务对象:xxxBO,xxx是业务名称。


相关文章
|
前端开发 数据库 微服务
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
2371 0
JavaWeb - 我们的开发规范(VO、DTO、BO、PO、DO、POJO)
|
4月前
|
人工智能 开发者
30分钟搞定媒体级新闻稿,这个AI提示词让技术人也能玩转公关写作
开发者常因新闻稿写作犯难,本文分享一套AI提示词工具,涵盖角色定义、结构化输入输出、多场景适配与合规检查,助力技术人快速生成符合媒体标准的专业稿件,提升传播效率。
730 6
|
8月前
|
人工智能 自然语言处理 DataWorks
AI工具落地指南:企业SEO与营销双提升
使用国内工具(如百度智能投放)规避数据风险,参考乐儿互动的SEO合规方案。 通过以上工具组合与策略调整,企业可实现SEO流量与营销转化的双重提升。
|
机器学习/深度学习 存储 人工智能
SRMT:一种融合共享记忆与稀疏注意力的多智能体强化学习框架
自反射记忆Transformer (SRMT) 是一种面向多智能体系统的记忆增强型Transformer模型,通过共享循环记忆结构和自注意力机制,优化多智能体间的协同效率与决策能力。SRMT在复杂动态环境中展现出显著优势,特别是在路径规划等任务中。实验结果表明,SRMT在记忆维持、协同成功率及策略收敛速度等方面全面超越传统模型,具备广泛的应用前景。
558 11
SRMT:一种融合共享记忆与稀疏注意力的多智能体强化学习框架
|
缓存 NoSQL Java
Spring Boot与Redis:整合与实战
【10月更文挑战第15天】本文介绍了如何在Spring Boot项目中整合Redis,通过一个电商商品推荐系统的案例,详细展示了从添加依赖、配置连接信息到创建配置类的具体步骤。实战部分演示了如何利用Redis缓存提高系统响应速度,减少数据库访问压力,从而提升用户体验。
603 2
|
JSON 安全 Java
Spring Boot中的安全过滤器及使用方法
Spring Boot中的安全过滤器及使用方法
|
存储 消息中间件 JSON
DDD基础教程:一文带你读懂DDD分层架构
DDD基础教程:一文带你读懂DDD分层架构
|
数据可视化 前端开发 JavaScript
【Echarts大屏】数字化巡检可视化大屏(附原码一键复制)
【Echarts大屏】数字化巡检可视化大屏(附原码一键复制)