初入 Java ,看不懂 各种奇奇怪怪的 PO、VO、DTO、BO、**O…求一份攻略

2023-11-16 06:27:04 +08:00
 mangojiji
一大堆疑惑:

入参时,Controller 接收哪个 O ?
Service 接收和 Mybatis 接收哪个 O ?

Mybatis 返回的可能是 PO (比如 getById 或者 selectByPrimaryKey),但也可能是自定义的 POJO 吧(比如一条复杂 Join 的结果),在这类情况下,Mybatis 返回的这些对象属于什么 O ?这些对象能被 Service 直接返回吗?

Service 应该返回什么 O 给 Controller ?

BO 又是个啥,看了不少资料愣是没整明白。

DTO 在什么时候用,有说层之间入参和输出的,也有说调用其它系统的,总之乱七八糟。。。

PS:项目没有使用 DDD ,是传统 SpringMVC+Mybatis 三层的设计。主要原因是我不懂 DDD…能力有限

最好能够配合示例代码或者伪代码,谢谢大佬们。
11947 次点击
所在节点    Java
94 条回复
siweipancc
2023-11-16 19:17:27 +08:00
entity 一把梭,什么多对多性能,我就套懒加载了。
各种 o 转来转去一堆内存对象,你写一次数据库 3ms 后我也写一次,一堆并发锁,最后结局方式串行化。⬅️前东家的业务就是这么垮的
kanepan19
2023-11-16 19:41:43 +08:00
一般简单点 DO BO VO 就行了。
给 controller 的,比如显示页面,和导出都是用 VO
BO 业务对象,比如在登录 manager 里的接口 Result<UserBO> login() BO 一般厚一点, 可以写方法,比如 UserBO.isAdmin() ,
DO 就不用说了,数据库里捞出来就是 DO
当然也可以 DO 一把梭
rioshikelong121
2023-11-16 20:01:00 +08:00
11232as
2023-11-16 21:29:14 +08:00
我们这边框架就两种对象,PO 持久化对象,BO 总线对象
dengji85
2023-11-17 08:58:42 +08:00
enitity,map 一把梭,没有这么多 o,有时 entity 也没有,入参和返回 map,jdbc 直接来
Chinsung
2023-11-17 12:34:03 +08:00
底层 PO 数据库,中间全是 DTO ,返回结果用 VO
搞那么多复杂的理解成本,也得高强度 CR 防止别人拉屎,何必呢
visper
2023-11-17 13:59:36 +08:00
直接数据库拿出来转成 List<Map>, 结束。
funcNVidia
2023-11-17 15:10:59 +08:00
除了 BO ,其它都是抽象的概念,你自己叫一个 A->Z O 都行,啥意思你自己定义
funcNVidia
2023-11-17 15:13:25 +08:00
@funcNVidia 除了 DO 这种与数据库直接对应的(
whoiszxl1020
2023-11-17 15:33:14 +08:00
请求参数如果是增删改的用 XxCommand ,表示这是一个命令;如果是查询,则用 XxQuery ,表示是个查询操作;返回参数 XxResponse ,业务内流转用 XxDTO ,数据库实体用 XxEntity 就完事了,只要自己能看懂就没毛病,不要纠结那么多 O 。
zzNaLOGIC
2023-11-17 17:19:41 +08:00
只要代码能跑&&没人管,你全用 OOO 都没事
Richared
2023-11-17 17:26:16 +08:00
你管他是啥呢,这玩意是大家都这么搞,你用着才舒服,想怎么来怎么来,你全用 map 也没人管的了。一般我都是接受参数一个,返回页面一个,中间全部 entity 。
movieatravelove
2023-11-17 17:35:39 +08:00
别的不重要,数据库层实体和领域层实体一定要解耦
yoloMiss
2023-12-11 21:21:55 +08:00
就两个 o ,和数据库交换一个,和前端交换一个。搞烦了,一个 o 都没有。就是硬来。

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

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

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

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

© 2021 V2EX