请教各位一个概念和具体应用上的问题, VO, BO, PO, DO, DTO 这些概念和具体应用应该是怎样的?

2023-03-29 15:40:39 +08:00
 chirsgod

最近被项目里各种各样的 O 给弄点有点有点迷茫,问了下 ChatGPT 后和搜索引擎的结果对比了下,感觉也是略微有所出入,每个人对这些理解都不是完全一样的。想请教下正确的具体概念,最后能提供一个好的开源项目,供我学习具体代码上的应用。谢谢大家

3872 次点击
所在节点    Java
29 条回复
bthulu
2023-03-30 09:47:51 +08:00
就一个实体就行了, 不要提前设计. 等后面确实需要综合多种渠道拿混合数据, 再改成一个 vo 就可以了.
xiaohundun
2023-03-30 09:56:48 +08:00
我也挺想问的,大家公司都不分 PO 、VO 、DTO 的么?我感觉还是挺有必要的呀,尤其是 PO 、VO 至少得有吧,毕竟前端需要的东西跟数据库差别大
xiaohundun
2023-03-30 09:58:03 +08:00
@xiaohundun #22 啥啥都是直接用 map 的话,后期维护不是个灾难。。
lyf362345
2023-03-30 11:27:50 +08:00
建议不用,Java 里的糟粕,最近公司里写 Go 的人也把这些东西搞过来了,看着挺难受的。
lanlanye
2023-03-30 11:48:58 +08:00
没有实际用过 Java ,理论上 CRUD 初期 POJO 的结构可以一路传到任何地方,只需要在前端接口变更 /数据库结构变更等情况发生时再创建对应的对象做转换就可以了。
问题是如果一开始没做这件事,等问题发生时去处理的人又没能意识到这里需要一个现在没有的对象,项目就会逐渐变得无法理解……
witcherhope
2023-03-30 15:03:18 +08:00
一种工程化实践而已,就是分层和职责分离的思想,每一层的上下文语义不一样,理所当然实体要有所区分
kaddusabagei38
2023-03-30 16:01:01 +08:00
发明出这么多层东西,然后代码里到处 copyProperties

你们 java 真的挺好笑的
pocketz
2023-03-31 16:59:00 +08:00
分享一个我的收藏吧,讲得蛮详细的
https://blog.csdn.net/chenchunlin526/article/details/69939337
pocketz
2023-03-31 17:03:15 +08:00
搞清楚缩写前的单词,能清楚一半
VO: view object
BO: business object
PO: persistent object
DO: data object
DTO: data transfer object

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/928180

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX