在DTO中使用注解的形式检验数据是否为空,为什么这么做
2019-04-18 10:57
1501 查看
如上图,在一个DTO中使用了注解的形式进行参数的非空验证,为什么要这么做呢?
为什么不直接在使用时对参数进行非空验证呢?
首先说一下DTO的作用,表现层与应用层之间是通过数据传输对象(DTO)进行交互的,数据传输对象是没有行为的POCO对象(POCO就是简单CLR对象(Plain Old CLR Object),概念来源于Java中的POJO),它 的目的只是为了对领域对象进行数据封装,实现层与层之间的数据传递。为何不能直接将领域对象用于数据传递?因为领域对象更注重领域,而DTO更注重数据。不仅如此,由于“富领域模型”的特点,这样做会直接将领域对象的行为暴露给表现层。
并且,数据传输对象DTO本身并不是业务对象。数据传输对象是根据前台的需求进行设计的,而不是根据领域对象进行设计的。比如,company领域对象可能会包含一些诸如companyName,companyCode, Address等信息。但如果前台上不打算显示Address的信息,那么CustomerDTO中也无需包含这个 Address的数据。
在DTO中对非业务的数据进行验证,例如是否为空,并不需要业务上的验证,主要还是为了减少后台的校验过程,使代码更加简洁规范;而类似用户名是否重复这样需要业务上的验证的,是需要交给对应的controller层下的service进行处理。
相关文章推荐
- Java中为什么判断引用数据类型是否为null不能使用equals
- ORACLE使用dbv工具检验数据文件是否有坏块
- PHP - Manual手册 - 附录 H. php.ini 配置选项 - short_open_tag决定是否允许使用PHP代码开始标志的缩写形式
- 使用该JavaBean可以将数据在JSP页面中以表格的形式显示出来,并具有动态排序、动态生成查询、自动分页功能
- 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
- 欲使用SharePoint开发检验数据管理系统,寻求帮助,熟悉SPS SDK的请来看看
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- 判断表中的数据是否被其他表中使用过!!
- 用MVC搭建班级站点----注册界面:数据注解的使用
- jsp request,正确使用. 为什么不能使用 getAttribute 得到保存的数据
- 在C#.net中使用正则表达式检验输入是否为数字
- DB2 9 使用启示(733 检验)认证指南,第 3 部分: XML 数据把持(5)
- 查看Oracle数据库表空间大小(空闲、已使用),是否要增加表空间的数据文件
- html5使用local storage存储的数据在本地是以何种形式保存的
- 我们为什么需要DTO(数据传输对象)
- mybatis注解形式操作数据
- J2EE中数据对象的一些概念,比如DTO,VO,BO,ORM,POJO等相关注解
- 判断表中的数据是否被其他表中使用过!!
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
- 回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。