controller 接受的参数是 vo 还是 dto - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
muyunn
V2EX    程序员

controller 接受的参数是 vo 还是 dto

  •  
  •   muyunn 2020-0514 18:15:22 +08:00 13938 次点击
    这是一个创建于 1998 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有没有代码比较规范的 java 后端开源项目

    49 条回复    2021-10-18 14:38:08 +08:00
    chendy
        1
    chendy  
       2020-05-14 18:22:12 +08:00
    controller 的参数用于前后端数据传输,所以是 dto
    asAnotherJack
        2
    asAnotherJack  
       2020-05-14 18:35:15 +08:00
    无知的我悄悄打开搜索引擎查了一下 vo 和 dto 是什么意思
    tangzh55
        3
    tangzh55  
       2020-05-14 18:38:02 +08:00   2
    po 对应表结构一一对应,vo 在表结构基础字段上增减个性化的返回给前端,dto 在表结构基础字段上增减个性化的用于入参
    我们是这样的
    muyunn
        4
    muyunn  
    OP
       2020-05-14 18:39:44 +08:00
    哈哈哈
    muyunn
        5
    muyunn  
    OP
       2020-05-14 18:40:05 +08:00
    @asAnotherJack 哈哈哈
    muyunn
        6
    muyunn  
    OP
       2020-05-14 18:40:34 +08:00
    @chendy 我看到有人说是 vo,糊涂了
    muyunn
        7
    muyunn  
    OP
       2020-05-14 18:40:50 +08:00
    @tangzh55 好的,就按照你说的来
    IMCA1024
        8
    IMCA1024  
       2020-05-14 18:42:47 +08:00   2
    emm 。。
    我们是 Controller 接收 XXRequest 类
    然后在 Controller 转成 XXDTO 给 Service
    Service 传 DTO 给 Mapper
    Service 返回 VO 给 controller
    controller 最终返回 XXResponse
    jinzhongyuan
        9
    jinzhongyuan  
       2020-05-14 18:42:50 +08:00
    codergrowing
        10
    codergrowing  
       2020-05-14 18:43:35 +08:00 via Android
    参数我们都是叫* Param,VO 是给前端返回的数据,DTO 仅使用于 service 层
    luckyrayyy
        11
    luckyrayyy  
       2020-05-14 18:43:39 +08:00 via iPhone
    我 controller 入参出参都用的 vo……
    muyunn
        12
    muyunn  
    OP
       2020-05-14 18:48:14 +08:00
    @IMCA1024 转糊涂了快
    125113483
        13
    125113483  
       2020-05-14 18:57:44 +08:00
    View Object 和 Data Transfer Object 视图对象 就是把页面的参数封装起来 和数据传输对象 就是用于展示层和服务层之间转换。用于 service 层的
    akiakiseofficial
        14
    akiakiseofficial  
       2020-05-14 19:19:47 +08:00
    我们一般 rpc 接口用的是 dto,controller 倒是没见过 dto 的用法,vo 居多
    mmdsun
        15
    mmdsun  
       2020-05-14 19:29:50 +08:00 via Android
    Spring Data REST 做的。不过我一直都是直接用实体。
    不知道这样会有什么问题吗?

    主要是不想搞太多 dto,vo (实体从头用到尾。
    xy90321
        16
    xy90321  
       2020-05-14 19:55:09 +08:00 via iPhone
    我司项目里一般管 VO 叫 WebDTO
    peyppicp
        17
    peyppicp  
       2020-05-14 19:59:27 +08:00
    ***Request
    ***Response

    Golang :)
    watzds
        18
    watzds  
       2020-05-14 20:03:53 +08:00 via Android
    VO 到底是 value object 还是 view object ?
    Service 用 DTO 吗
    还有转来转去头疼啊
    freebird1994
        19
    freebird1994  
       2020-05-14 20:06:34 +08:00 via Android
    我们 dto 只用于 rpc 传输,没有 controller 所以没有 vo
    xizismile
        20
    xizismile  
       2020-05-14 20:09:19 +08:00 via Android
    都可以呀,只要这个规范在你们的开发团队统一就行
    v2hh
        21
    v2hh  
       2020-05-14 20:56:27 +08:00
    请求**Request,响应**Response,传输 DTO
    jorneyr
        22
    jorneyr  
       2020-05-14 21:11:24 +08:00
    我们全部是 xxx.bean.Xyz 一把梭,不分 vo dto 等
    gowk
        23
    gowk  
       2020-05-14 21:52:06 +08:00 via Android
    @IMCA1024 传来传去的,不累吗
    coer
        24
    coer  
       2020-05-14 21:59:20 +08:00 via iPad
    我们这 controller 接受的一般叫**param,发给前端的是 vo,dto 用在 service,mapper 查出来的是 model
    voidxx
        25
    voidxx  
       2020-05-14 23:44:37 +08:00 via iPhone
    鄙人习惯用 xxForm,代表表单
    optional
        26
    optional  
       2020-05-14 23:47:35 +08:00 via Android
    叫 xxxRequest 或者 xxInput
    charlie21
        27
    charlie21  
       2020-05-14 23:51:53 +08:00
    muskill
        28
    muskill  
       2020-05-15 08:18:12 +08:00 via iPhone
    @IMCA1024 多此一举啊,直接 DTO,VO 不就完了
    JRay
        29
    JRay  
       2020-05-15 09:17:36 +08:00
    @tangzh55 我目前也是这么使用的,有时候 DTO 和 VO 字段一样就直接重用了
    york7
        30
    york7  
       2020-05-15 09:51:16 +08:00
    我们这边是这样
    DO ( Data Object ):与数据库表结构一一对应,通过 DAO 层向上传输数据源对象。
    DTO ( Data Transfer Object ):数据传输对象,Service 或 Manager 向外传输的对象。
    VO ( View Object ):显示层对象,通常是 Web 向模板渲染引擎层传输的对象。
    vitoliu
        31
    vitoliu  
       2020-05-15 11:04:47 +08:00   1
    后端给前端 VO,前端给后端 DTO
    qW7bo2FbzbC0
        32
    qW7bo2FbzbC0  
       2020-05-15 11:07:52 +08:00
    我写 C#时习惯命名为 XXXGetModel,XXXPatchModel,XXXPostModel,XXXModel
    qW7bo2FbzbC0
        33
    qW7bo2FbzbC0  
       2020-05-15 11:08:38 +08:00
    响应的话,则是 XXXResponseModel,如果简单点直接就是数据表本身 XXXModel
    cruii
        34
    cruii  
       2020-05-15 11:34:12 +08:00
    我也因为这个纠结半个月了,也没找到按照这种开发模型的项目
    zhuweiyou
        35
    zhuweiyou  
       2020-05-15 12:08:35 +08:00
    HashMap 一把梭
    muyunn
        36
    muyunn  
    OP
       2020-05-15 13:37:05 +08:00 via iPhone
    @zhuweiyou 哈哈哈,老哥,头铁的很啊
    muyunn
        3
    muyunn  
    OP
       2020-05-15 13:37:36 +08:00 via iPhone
    @cruii 是啊,想找个开源项目看看,结果一个都没有
    cfcheng503
        38
    cfcheng503  
       2020-05-15 13:41:22 +08:00
    bo 呢
    Foxkeh
        39
    Foxkeh  
       2020-05-15 14:03:26 +08:00   1
    mazai
        40
    mazai  
       2020-05-15 14:12:50 +08:00
    controller 接收的肯定是 VO 对象啊,传给 S 层的是 DTO
    ychost
        41
    ychost  
       2020-05-15 15:05:46 +08:00
    没必要 O,一般 DO 可以上,其余的看心情吧
    xuanbg
        42
    xuanbg  
       2020-05-15 15:33:31 +08:00
    严格地讲,接收的参数是 dto,返回的数据是 vo 。但我们有时候图省事就是一个 dto……
    wushigejiajia01
        43
    wushigejiajia01  
       2020-05-15 15:41:44 +08:00 via Android
    这个我去年也纠结过一阵,但是网上搜索没找到啥有用的信息

    最终得出的结论是:只要项目组内部统一用法就完事,这个没有啥规定

    早期项目,我都没用过啥 O

    某些时候,这个转来转去的,麻烦的很
    slyang5
        44
    slyang5  
       2020-05-15 21:05:38 +08:00
    @IMCA1024 你这个很规范了。 嘻嘻
    kylix
        45
    kylix  
       2020-05-15 21:25:49 +08:00
    偷偷的收藏下。。。
    tairan2006
        46
    tairan2006  
       2020-05-15 21:53:41 +08:00 via Android
    组内统一就行
    EminemW
        47
    EminemW  
       2020-05-16 11:49:36 +08:00
    我想知道 pojo 用在什么地方。。还有以 entity 命名的
    muyunn
        48
    muyunn  
    OP
       2020-05-17 00:36:37 +08:00
    @EminemW POJO(Plain Ordinary Java Object): 在本规约中,POJO 专指只有 setter/getter/toString 的 简单类,包括 DO/DTO/BO/VO 等。entity 属于 DO(Data Object).---阿里 java 开发手册
    a68UkLHpycW7ImyV
        49
    a68UkLHpycW7ImyV  
       2021-10-18 14:38:08 +08:00
    最清晰的还是 xxRequest,xxResponse 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     969 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 23:05 PVG 07:05 LAX 15:05 JFK 18:05
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86