java 深入了解DTO及如何使用DTO
这篇文章主要来谈论一下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相关推荐
- 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 ...
- Caused by: java.lang.IllegalStateException: Serialized class cn.bloghut.dto.ProducterDto must implem
错误产生环境 使用zookeeper+dubbo进行远程调用时产生 错误描述 Caused by: java.lang.IllegalStateException: Serialized class ...
- dto与dto相互转换_在DTO上
dto与dto相互转换 通常使用DTO或数据传输对象 . 什么不是s? 众所周知,它们源自DDD(域驱动设计). 在那里很有意义–域对象具有状态,身份和业务逻辑,而DTO仅具有状态. 但是,当今许多项 ...
- dto java_java对象之dto
在分布式系统中,客户端和服务器端交互有两种情形:第一个是客户端从服务器端读取数据:第二个是客户端将本身的数据传递给服务器端. 当有客户端要向服务器端传输大量数据的时候,可以通过一个包含要传输的所有数据 ...
- Spring Boot DTO 示例 - 实体到 DTO 的转换
在本教程中,我们将学习如何在Spring Boot 应用程序中创建 DTO(数据传输对象)类,以及如何使用 ModelMapper 库将实体转换为 DTO,反之亦然. 数据传输对象设计模式是一种常用的 ...
- 【实际开发03】- dto + vo - 先处理 dto , 后处理 vo ( 通常少一注解 )
目录 0. 建议 : 多用组合 , 少用继承 1. @EqualsAndHashCode(callSuper = true) - 解决允许调用父类 2. 序列化 ID : private static ...
- java metapojo_JavaBean,POJO,VO,DTO的区别和联系
JavaBean 是一种JAVA语言写成的可重用组件.为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器.JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性 ...
- 阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义
分层领域模型规约: DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象. DTO( Data Transfer Object):数据传输对象,Service或Ma ...
- java dto entity,entity与DTO完全一致时
完全一致 指的是entity与DTO之间参数名.参数类型.参数个数全部相同的情况 entity代码 package com.hxd.simple.domain.entity; import java. ...
最新文章
- 【Design pattern】设计模式思路总结(三)
- python threading模块多线程源码示例(一)
- 超级详细的 Python 数据分析指南
- 一步一步学习ASP.NET MVC 1.0创建NerdDinner 范例程序 - 强烈推荐!!!
- 基于Apache Spark的机器学习及神经网络算法和应用
- nyoj-括号匹配(二)---动态规划
- mysql cmake错误_MySQL5.5安装出现CMake错误找不到CMakelists.txt原因-阿里云开发者社区...
- python dll注入 网络_python – 检测反射型DLL注入
- 虚拟环境安装Scrapy框架
- c语言2 amp 3结果,C语言里23=什么?
- topcoder srm 540 div1
- 风险评估在公路安全生命防护工程中的应用
- 货币市场基金基础知识
- 软件测试——NextDay测试
- 引进国外SD-WAN技术,凌锐蓝信为企业提供跨境网络连接服务
- NOIP2014P4 子矩阵 题解
- 高通平台开发系列讲解(充电篇)充电管理芯片PM7250B详解
- 计算机安全模式有哪些作用是什么意思,进入安全模式后有什么用处?
- 2022中科院分区表弃用影响因子,多方官宣
- 关于win10系统下unity3D自带编辑器中文乱码的解决方案