这篇文章主要来谈论一下DTO使用的场合及其带来的好处。首先要理解DTO是什么?

DTO就是数据传输对象(Data Transfer Object)的缩写。DTO模式,是指将数据封装成普通的JavaBeans,在J2EE多个层次之间传输。   DTO类似信使,是同步系统中的Message。  该JavaBeans可以是一个数据模型Model。

在传统的编程中,我们一般都是前台请求数据,发送到Webservice,然后WebService向数据库发出请求,获取数据,然后一层层返回;模型如下:

这种比较原始的请求方式带来的缺点有很多,多次请求耗费一定的网络资源,减慢效率。如果一次性返回整个实体类,还可能造成数据库表结构的泄漏。

采用DTO模型之后,整个流程就不一样了:

这样带来的好处有:

1.依据现有的类代码,即可方便的构造出DTO对象,而无需重新进行分析。

2.减少请求次数,大大提高效率。

3.按需组织DTO对象,页面需要的字段我才组织,不需要的我不组织,可以避免传输整个表的字段,一定程度上提高了安全性。

结合个人的开发经验来谈一下用法:

一般我们使用DTO类来继承entity实体类,在DTO类里放一些业务字段,并提供get、set方法。当我们在业务逻辑层或者交互层用到一些数据库中不存在的字段时,我们就需要在DTO类里放这些字段,这些字段的意义就相当于一些经处理过的数据库字段,实质意义就是方便数据交互,提高效率。

java 深入了解DTO及如何使用DTO相关推荐

  1. Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分

    Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分 PO:持久对象 (persistent object),po(persiste ...

  2. Caused by: java.lang.IllegalStateException: Serialized class cn.bloghut.dto.ProducterDto must implem

    错误产生环境 使用zookeeper+dubbo进行远程调用时产生 错误描述 Caused by: java.lang.IllegalStateException: Serialized class ...

  3. dto与dto相互转换_在DTO上

    dto与dto相互转换 通常使用DTO或数据传输对象 . 什么不是s? 众所周知,它们源自DDD(域驱动设计). 在那里很有意义–域对象具有状态,身份和业务逻辑,而DTO仅具有状态. 但是,当今许多项 ...

  4. dto java_java对象之dto

    在分布式系统中,客户端和服务器端交互有两种情形:第一个是客户端从服务器端读取数据:第二个是客户端将本身的数据传递给服务器端. 当有客户端要向服务器端传输大量数据的时候,可以通过一个包含要传输的所有数据 ...

  5. Spring Boot DTO 示例 - 实体到 DTO 的转换

    在本教程中,我们将学习如何在Spring Boot 应用程序中创建 DTO(数据传输对象)类,以及如何使用 ModelMapper 库将实体转换为 DTO,反之亦然. 数据传输对象设计模式是一种常用的 ...

  6. 【实际开发03】- dto + vo - 先处理 dto , 后处理 vo ( 通常少一注解 )

    目录 0. 建议 : 多用组合 , 少用继承 1. @EqualsAndHashCode(callSuper = true) - 解决允许调用父类 2. 序列化 ID : private static ...

  7. java metapojo_JavaBean,POJO,VO,DTO的区别和联系

    JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性 ...

  8. 阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义

    分层领域模型规约: DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象. DTO( Data Transfer Object):数据传输对象,Service或Ma ...

  9. java dto entity,entity与DTO完全一致时

    完全一致 指的是entity与DTO之间参数名.参数类型.参数个数全部相同的情况 entity代码 package com.hxd.simple.domain.entity; import java. ...

最新文章

  1. 【Design pattern】设计模式思路总结(三)
  2. python threading模块多线程源码示例(一)
  3. 超级详细的 Python 数据分析指南
  4. 一步一步学习ASP.NET MVC 1.0创建NerdDinner 范例程序 - 强烈推荐!!!
  5. 基于Apache Spark的机器学习及神经网络算法和应用
  6. nyoj-括号匹配(二)---动态规划
  7. mysql cmake错误_MySQL5.5安装出现CMake错误找不到CMakelists.txt原因-阿里云开发者社区...
  8. python dll注入 网络_python – 检测反射型DLL注入
  9. 虚拟环境安装Scrapy框架
  10. c语言2 amp 3结果,C语言里23=什么?
  11. topcoder srm 540 div1
  12. 风险评估在公路安全生命防护工程中的应用
  13. 货币市场基金基础知识
  14. 软件测试——NextDay测试
  15. 引进国外SD-WAN技术,凌锐蓝信为企业提供跨境网络连接服务
  16. NOIP2014P4 子矩阵 题解
  17. 高通平台开发系列讲解(充电篇)充电管理芯片PM7250B详解
  18. 计算机安全模式有哪些作用是什么意思,进入安全模式后有什么用处?
  19. 2022中科院分区表弃用影响因子,多方官宣
  20. 关于win10系统下unity3D自带编辑器中文乱码的解决方案

热门文章

  1. 如何把word分装到两个byte_如何核对两个Word文档的内容差别?同事加班半小时,我只花了30秒...
  2. 使用多线程的方式调用chineseocr_API
  3. 英语口语小组PPT--袁隆平
  4. codeforces 158A-C语言解题报告
  5. uninitialized_copy测试代码示例
  6. 十大教养,让你气度非凡!
  7. 不朽传奇-云计算技术背后的那些天才程序员:Qemu的作者法布里斯贝拉
  8. 软件质量管理之困境与对策思考
  9. 从开源软件开发中体会到的心得
  10. 进一步了解 apt-get 的几个命令