首页 > 其他分享 >vo/dto/entity关于代码规范

vo/dto/entity关于代码规范

时间:2024-01-25 11:57:08浏览次数:26  
标签:dto 前端 vo 可能 参数 entity

简明扼要的说明一下,vo/dto/entity分别是什么,什么时候该用谁。

vo:是用来把数据返回前端的载具
为什么:因为普遍来说,会在vo里写上有关分页的属性(page/size等);除此之外,vo里放的属性,应该与你的业务逻辑没有半毛钱关系,单纯就是前端要啥你写啥。
entity:就是体现你数据库的表结构,你表有啥字段它就有啥
为什么:因为现在普遍用mybatisPlus,用entity就会十分方便和高效;换句话说,你不用mp或者其他ORM框架,你甚至可以把所谓的"vo","dto","entity"全都一锅烩放在一个类里。

可能你有疑问,那为什么不把entity直接传前端?有没有一种可能前端会要一些该表结构没有的字段。
dto:接收参数/处理数据
为什么:一般是接收前端请求的参数。更多是处理数据:举例前端需要一个数据,结构是[obj_A{"sx1","sx2",[1,2,3],obj_B{"dx1","dx2"}}],这样的结构可能是好几个entity处理后产生的一个list。
那么处理数据的时候,某个表对应的entity里的字段肯定不够用啊,这时候咋办,那就搞出来一个dto里面的属性有list,有map,可能还有其他的实体类,中间的处理过程全都在dto操作。负责把entity零散的数据整装好漂漂亮亮的交给vo,
或者直接就把dto返前端了。 可能你有疑问,那为什么不直接在vo处理,搞dto不是多此一举吗。你说的还真没错,你非要这么来,那也没问题。但在实际操作中,你可能会发现这样的设计存在一些问题。首先,如果把所有数据处理逻辑放在vo中,可能会导致vo的职责过于庞大,
使其难以理解和维护。其次,由于vo的主要职责是封装页面或组件的数据,如果在其中加入过多的业务逻辑,可能会影响其易用性和可读性。vo人都傻了,你怎么不把entity也给我塞进来,干脆不要用mp了。

总结下,entity没有争议,而vo和dto都可以用来接收参数,也都可以用来返回前端。至于他俩的选择,那就是取决于接收或者返回前端传递的是包含页面参数(分页)。主要还是看每个人公司的具体要求了,有的公司dto里放页面参数的。还有就是对安全的要求性,毕竟dto里的属性很多,可能返回前端会暴露过多的信息。个人认为,严格些就是应该vo是返前端,dto来接参数。既然搞了这个规范,那么前端与后端就是想要解耦对吧,如果还是前后端的字段混乱在一起没有分开,那搞这个的意义何在?

标签:dto,前端,vo,可能,参数,entity
From: https://www.cnblogs.com/iRyz/p/17986855

相关文章

  • vivo 海量基础数据计算架构应用实践
    作者:来自vivo互联网大数据团队本文根据刘开周老师在“2023vivo开发者大会"现场演讲内容整理而成。公众号回复【2023VDC】获取互联网技术分会场议题相关资料。本文介绍了vivo在万亿级数据增长驱动下,基础数据架构建设的演进过程,在实时和离线计算过程中,如何基于业务发展,数据......
  • G. Mischievous Shooter
    G.MischievousShooterOncethemischievousandwaywardshooternamedShelfoundhimselfonarectangularfieldofsize$n\timesm$,dividedintounitsquares.Eachcelleithercontainsatargetornot.Shelonlyhadaluckyshotgunwithhim,withwhich......
  • Voxel R-CNN 代码解析
    1.网络主体架构以voxel_rcnn_car.yaml为例。主要包括:VFE(体素编码网络),这里采用下MeanVFE;BACKBONE_3D,这里采用VoxelBackBone8x;MAP_TO_BEV,这里采用HeightCompression,NUM_BEV_FEATURES为256;BACKBONE_2D,这里采用BaseBEVBackbone;DENSE_HEAD,这里采用AnchorHeadSingle;ROI_H......
  • “哄女友挑战”上线即爆火,两天烧掉 10 亿 token,AI 已通关丨 RTE 开发者日报 Vol.133
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • 负债 1092.8 亿美元,苹果成全球负债第二多的科技公司丨 RTE 开发者日报 Vol.131
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • 当IDENTITY_INSERT设置为OFF时不能向表插入显示值。(源:MSSQLServer,错误码:544)
    错误提示"事务和快照同步时提示:当IDENTITY_INSERT设置为OFF时不能向表插入显示值。(源:MSSQLServer,错误码:544)"原因:在SQL2008同步时到SQL2008/SQL2005/SQL2014时有时由于发布配置不当(复制扩展属性=False)当新增数据时同步会出现的错误:解决方法1:在发布服务器—选择发布项—属......
  • 基础架构即代码 | 亚马逊如何在现实生活中实践 DevOps
    当我在2005年作为开发人员加入亚马逊时(那时AmazonWebServices还不存在),我从公司领了一个传呼机(如图1所示)。在亚马逊,开发人员不仅要设计实现一个具体的服务,还要负责这个服务的部署和管理。为了完成运营任务,开发人员需要轮流“值班”,随时准备故障诊断和处理。传呼机就是值班......
  • 中断机制之通过volatile实现线程中断停止
    如何停止中断运行中的线程?首先,一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止,自己来决定自己的命运,所以,Thread.stop,Thread.suspend,Thread.resume都已经被废弃了volatile实现线程中断演示通过修改共享变量的方式来达到通知的目的从而使目的线程中断......
  • dotnet 多数据库 sqlite efcore model和entity区别 一对多 多对一 多对多
    efcore-multi-db/MultiDb.slnMicrosoftVisualStudioSolutionFile,FormatVersion12.00#VisualStudio15VisualStudioVersion=15.0.27130.2024MinimumVisualStudioVersion=10.0.40219.1Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}")="......
  • Petrozavodsk Summer 2019. Day 9. MEX Foundation Contest【杂题】
    比赛链接A.TheOnePolynomialMan给定模数\(p\)和\(0\simp-1\)的两个集合\(U,V\),求有多少个有序对\((a,b)\)满足:\(f(a,b)=\prod\limits_{z\inV}\left(\frac{(2a+3b)^2+5a^2}{(3a+b)^2}+\frac{(2a+5b)^2+3b^2}{(3a+2b)^2}-z\right)\equiv0\pmo......