• 首要的作用,我认为就是减少原生对象的多余参数。包括为了安全,有时候也为了节约流量。例如:密码,你就不能返回到前端。因为不安全。 其次假如说:获取博客列表的时候,也不能返回博客全文吧。顶多就返回标题,id,和前几句。
  • 我认为第二个作用是减少重复代码。组装对象。假设用户的基本信息,详细信息,以及一些额外的附加数据。现在要返回给前台,你可以选择拼成map返回。但是map的缺点是,无法复用。假如需要增加或者删除某个参数还好,假如某个参数名写错了,而你又有几十个地方用到了这个单词,那就需要改几十个。而DTO,你只需要改一处即可。其次,可以规范参数类型,因为map返回大多都是string直接返回,在存数据的时候也无法校验数据类型是否是想要的类型。假如前台要的单位是分,你后台直接传了个浮点回去,前端就会找你麻烦。但是如果用DTO,你直接把前端的数据要求放进DTO里,你如果直接把不符合要求的类型放进去,就会报错。同时,也更便于你在DTO类里直接写注释,便于别人阅读。

作者:Cocoon
链接:https://www.zhihu.com/question/348822475/answer/851206595
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

DTO的理解的更多相关文章

  1. 关于DTO的理解

    转自大神loveis715博文:http://www.cnblogs.com/loveis715/p/4379656.html 在一个web服务的实现中,我们常常需要访问数据库,并将从数据库中取得的数 ...

  2. 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较

    本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读 ...

  3. 数据传输对象(DTO)介绍及各类型实体比较

    数据传输对象(DTO)介绍及各类型实体比较 本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行 ...

  4. 正确理解DTO、值对象和POCO

    今天推荐的文章比较技术化也比较简单,但是对于一些初学者而言,可能也是容易搞混的概念:就是如何理解DTO.值对象和POCO之间的区别. 所谓DTO就是数据传输对象(Data Transfer Objec ...

  5. Java DTO(data transfer object)的理解

    首先明白springboot每层 model层 model层即数据库实体层,也被称为entity层,pojo层. 一般数据库一张表对应一个实体类,类属性同表字段一一对应. Model层是数据层: Ta ...

  6. DTO的一些理解(转载)

    1.什么是DTO DTO(Data Tansfer Object)即数据传输对象.之前不明白有些框架中为什么要专门定义DTO来绑定表现层中的数据,为什么不能直接用实体模型呢,有了DTO同时还要维护DT ...

  7. 【AutoMapper官方文档】DTO与Domin Model相互转换(上)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  8. 【AutoMapper官方文档】DTO与Domin Model相互转换(中)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  9. 【AutoMapper官方文档】DTO与Domin Model相互转换(下)

    写在前面 AutoMapper目录: [AutoMapper官方文档]DTO与Domin Model相互转换(上) [AutoMapper官方文档]DTO与Domin Model相互转换(中) [Au ...

  10. DTO – 服务实现中的核心数据

    在一个Web服务的实现中,我们常常需要访问数据库,并将从数据库中所取得的数据显示在用户页面中.这样做的一个问题是:用于在用户页面上展示的数据和从数据库中取得的数据常常具有较大区别.在这种情况下,我们常 ...

随机推荐

  1. 3DMAX安装失败怎么办?安装3DMAX失败提示错误怎么解决?

    3DMAX安装失败怎么办?安装3DMAX失败提示错误怎么解决?有很多同学想把3DMAX卸载后重新安装,但是发现3DMAX安装到一半就失败了或者显示3DMAX已安装或者安装未完成,大多数情况下其实是3D ...

  2. qt 单元测试遇到的问题

    升级了qt creator到新版本.使用 google 单元测试,发现一个单元测试显示不对了. 测试结果输出:FATAL, 项目"t_ps"的测试未产生任何预期输出 比较了几个测试 ...

  3. Rest-Assured发送POST请求:创建Hello-imook

    package heyuan.RestAssuredDemo;import static org.junit.jupiter.api.Assertions.*;import org.junit.jup ...

  4. vscode 开发Vue项目

    写在开头 Vue作为前端项目,本身不依赖IDE,完全可以使用任何文本编辑器进行开发.我使用vscode仅是因为比较习惯,vscode几乎可以作为任何项目的开发IDE. 环境安装 安装nodejs,去官 ...

  5. zabbix监控网络断网情况--初级版

    zabbix初级监控,通过IMCP方式PING即可 添加网络网关IP地址,鉴于zabbix一般报警方式采取发送邮件.钉钉.微信报警需要网络环境支持,于是至少设置zabbix服务器双网通,建议有条件上三 ...

  6. NOIP2022 游记

    无论结局如何,我都曾经来过. Day -1 zak 模拟赛,被殴打了. Day 0 上午 补模拟赛题. 下午 补模拟赛题. 徐老师过来分配了第二天下午造数据名单. 我造 T2.希望不会太难.(flag ...

  7. 什么是bootstrap?

    In computing, the term bootstrap means to boot or to load a program into a computer using a much sma ...

  8. Webservice EASLogin登录接口说明

    https://club.kingdee.com/forum.php?mod=viewthread&tid=1332944

  9. ORACLE备份脚本(3-RMAN0级全备)

    创建目录 mkdir  -p  /bak/level0 mkdir  -p  /bak/arch chown -R oracle:oinstall  /bak/ vi  rmanlevel0.sh # ...

  10. Docker--结合 Jenkins + Gitlab 完成自动化测试的持续集成实战

    本文转自:https://www.cnblogs.com/poloyy/p/13971134.html 进入 Jenkins 任务的配置页面 源码管理 构建触发器 为了安全起见生成一个 token 值 ...