DTO的转换规律一般可以总结为如下的几个类型,实际变化则可以是各种类型的组合:

属性内容的减少

性内容的增减在DTO不同形态之间的转变时候经常会发生。比如上例中添加用户LoginInfo对象的VO转换到BO的时候,就需要丢弃“重复输入密码”

的属性。有些VO对象甚至根本不需要转换成BO。在BO转换成PO的时候同样也会有属性内容减少的情况出现,比如“部门”这类树状层次结构对象,因为运行

效率的因素,也许会需要BO中有“下级部门列表”,实际存储到数据库的时候,PO只需要一个“上级部门ID”就可以了。

对象内容的填充或者增加

性内容同样会有可能增加,但是在系统处理DTO转换的时候,属性增加可能就意味着需要进行额外的查询和填充,比如我们使用“用户名”和“密码”进行登录的

时候,最终系统需要通过数据库查询得到并且存储“用户ID”,以此来保证用户的唯一性。又比如提交的数据存在校验错误,我们可能需要重新刷新该页面,并且

增加新属性“ErrorMessage”,以便把它显示在界面上,提醒用户注意。

对象的拆分和组合

我们可以看上面最后一个“添加用户”的例子,一个LoginInfo的BO转化为PO的时候被拆分成了2个对象,一个存放基本的用户信息,一个存放对应的Role信息。通常对象拆分的时候,常常需要填充或者补足新对象的内容;而对象合并的时候,常常出现内容减少的情况。

对象或者属性类型的变化

出现对象属性类型的变化在VO到BO的转换中比较常见,比如把用户输入的生日转化为一个真正的DateTime类型。

属性名称的变化

属性名称在转换过程中会有变化,一般这种情况应该尽可能不要出现,但是在项目重构的时候出现的概率较大。

除了DTO不同形态之间的转换规律之外,不同形态内部还有不同的工作要做:

校验

不要相信任何用户的输入”,这是设计程序跟用户进行交互操作时候永远需要遵守的一个原则。也就是所有的外部输入都需要进行正确性的校验。校验器是分为两个

层次,一个是属性层次的校验,比如“年龄”只能0到150之间有效。另外一个是对象层次的校验,或者说跨属性层次的校验,比如“年份输入闰年的时候,2月

可以有29日”等。

校验并不是一个单纯的问题,几乎所有的业务逻辑校验基本都需要一次完整的贯穿所有层次的调用。代价颇大。这个也是为什么我们在显示层做很多事先校验,而一旦进入业务逻辑层的时候,校验就经常会被“事后校验”代替了,人们会使用抛出异常的方法来代替“事前检查”。

java dto对象_DTO对象转换相关推荐

  1. 遇到MapStruct后,再也不手写PO,DTO,VO对象之间的转换了

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架 个人原创100W+访问量博客:点击前往,查看更多 介绍 在工作中,我们经常要进 ...

  2. Java中的dozer对象转换

    Java中的dozer对象转换 1.dozer介绍 Dozer是Java Bean到Java Bean映射器,它以递归方式将数据从一个对象复制到另一个对象. dozer是用来对两个对象之间属性转换的工 ...

  3. 关于JAVA Bean实体类对象pojo,vo,po,dto,entity之间的区别

    关于JAVA Bean实体类对象pojo,vo,po,dto,entity之间的区别: Pojo: Pojo 普通的java对象 最基本的javaBean只有属性 加上属性的get,set方法,可以转 ...

  4. JSON与Java对象的互相转换

    JSON与Java对象的互相转换 例一(单个对象进行赋值): @RequestMapping("test1.do")@ResponseBodypublic JSONObject t ...

  5. java dozer map转对象_对象转换利器之Dozer

    在Java的世界中,经常会涉及到需要在2个对象中进行转换,比如说: 调用SOAP Web服务,需要把自己的Domain对象转换为Soap服务的Jaxb对象请求, 在分层级SOA架构中,2个层级之间Do ...

  6. java DTO对象与PO对象的相互转换

    2018-09-27 10:27:50 前言: 在实际开发中往往需要DTO对象与PO对象的相互转换: 先说说什么是DTO对象吧,个人觉得DTO就是PO的扩展而已,PO专门指向数据库,DTO作扩展(字段 ...

  7. java中对象类型转换_Java 对象类型的转换

    对象类型的转换在Java编程中经常遇到,主要分为向上转型和向下转型,但一定要记住,无论是向上转型还是向下转型,两个类之间必须有继承关系.先来看看基本概念. 向上转型又被称作自动类型转换,就是子类引用的 ...

  8. Java(三)对象类型的转换和多态机制

    一 对象类型的转换 对象类型的转换在java编程中经常遇到,主要包括向上转型和向下转型. 1.向上转型 可以理解为:父类引用指向子类对象 public class TestPoly {public s ...

  9. JAVA 定时任务Corn的对象设计和corn字符串转换

    1.定义主对象 import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; impo ...

最新文章

  1. NVIDIA GPUs上深度学习推荐模型的优化
  2. Element UI格式化日期
  3. 【渝粤教育】国家开放大学2019年春季 2441经济数学基础1 参考试题
  4. STM32通用和复用功能IO
  5. 思科6509系统升级及单引擎升级为双引擎
  6. Windows下SVN已检出项目自动更新
  7. VS2010:外部依赖目录错误,怎么办
  8. 物理机下安装 VMware ESXi 6.7
  9. 日常生活-不帮人投资理财
  10. php安装xmeet,XMeet下载-XMeet官方版下载V1.8.4-99wo下载站
  11. camunda工作流开发实战------04 请假流程实例
  12. 免费版医疗器械计算机软件,医疗器械软件描述.docx
  13. 解决pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool
  14. Swift内存所有权宣言
  15. 令人头疼的优化问题——多目标规划问题matlab求解
  16. 安全应用超市:购君所需,付君所用
  17. 删除 git 本地仓库
  18. 怎么将计算机的数据都备份到网络设置,如何备份电脑所有数据?三大方法教你搞定电脑数据备份...
  19. 【CCSP真题】第一题 摘水果(拓扑排序)
  20. uniapp支付大全

热门文章

  1. jQuery Mobile 过渡效果
  2. GPS定位与IP地址定位
  3. 完整的Java从小白到大牛的自学路线
  4. linux中字符串截取的八种方法
  5. 美国访问学者邀请函怎么写?
  6. OPTIONS 漏洞修复
  7. Voronoi入门1
  8. sql2017 for linux,SQL Server 2017 for Linux
  9. 经方之魅力:木防己汤系列治疗案
  10. Codeforces 1182E Product Oriented Recurrence 矩阵快速幂