关于 DTO VS HashMap

[size=large]Hello,大侠们,我对DTO/VO有个问题:

我觉得 HashMap 相当方便,啥都能装,而且也可以获取里面的所有键和值,还不用反射,也不用写啥GenericDTO了。那么用DTO的好处在哪呢(分为分布式和非分布式B/S)?[/size]

0

2个回答

要对比性能问题的话,这个就要具体情况去测试才行

应该这么说,hashmap的灵活性比javabean强太多,它的key可以是任意的,而javabean定义了就无法修改,对于要求灵活性和可扩展性的系统应该选择hashmap

DTO,这个历史遗留模式,它本身就是多余的一层封装,如果系统本身设计得很好,其实是不会出现什么DTO的,

当然它也是有应用场景的嘛,比如GenericDTO,利用泛型就能针对不同的类型都写在一个DTO里,不需要类型转换,
如果是hashmap的话,key-value的方式,还是都要类型转换的,

0

DTO,从它的意思上就是数据传输对象,也就是VO值对象,说白了就是本身不带业务逻辑方法的纯数据,这个dto在几年前还算是比较流行的一种设计模式,但现在至少我做的项目里很少有它的影子在了,

其实关键是看你的系统架构是怎么分层的,到底需不需要在实体对象上封装这么一层DTO

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于 DTO VS HashMap
[size=large]Hello,大侠们,我对DTO/VO有个问题:rnrn 我觉得 HashMap 相当方便,啥都能装,而且也可以获取里面的所有键和值,还不用反射,也不用写啥GenericDTO了。那么用DTO的好处在哪呢(分为分布式和非分布式B/S)?[/size]rnrnrnrn
dozker--实现map 实体 DTO之间的相互转化
Dozer 是一个对象转换工具。nDozer可以在JavaBean到JavaBean之间进行递归数据复制,并且这些JavaBean可以是不同的复杂的类型,n所有的mapping,Dozer将会很直接的将名称相同的fields进行复制,如果field名不同,或者有特别的对应要求,则可以在xml中进行定义nnnjava工具类是:npublic class DozerBeanCopy {
DTO代码自动生成器
导入jar包nnnnnnnn配置dto.properties文件nnnndto.driverClass = com.mysql.jdbc.Driverndto.jdbcUrl = jdbc:mysql://localhost:3306/springndto.user = rootndto.password = 123456ndto.package = beanndto.mapper = mappe...
map和java对象转换
n利用java反射机制实现map和java对象的互相转换rn------------------------------------------------------rn1)java对象-》maprn/**rn * @description 接收DTO Object对象,转换成Map类型rn * DTO里的属性名称是Map里的keyrn * @param obj 需要转换的DTO对象rn ...
根据数据库表对象信息快速建立Dto类
整体思路rn1、进入数据库,查看表信息,复制表信息中的数据库字段部分rn2、利用java代码读取剪贴板内容rn3、切割替换字符串,把字段注释转成java文档注释,把下划线改成驼峰命名规则rn直接附代码,可以直接拷贝使用,部分非下划线字段可能有误,需要手动修改rnpackage demo;nnimport java.awt.*;nimport java.awt.datatransfer.Clipbo
关于接口封装Dto类
首先要明白接口文档返回的是对象还是集合listnn  data:{“ ”}        objectn  data:[{ },{ }]        listnneg1:返回结果示例    {n "data": [n         {“productCode” : ” 1”,“productName”:”产品A ” ,”count” : 12},n         {“productCode”...
利用Java反射机制和MapStruct解决具有继承关系的实体类和DTO之间的映射关系
关于MapStruct的使用此处不再赘述,如有不明白的同学,可以参考MapStruct官方文档或者我人机混合翻译后的文档。nn 先看一下我对以下代码简要的描述,Component类是一个基类,其下有许多继承于它的子类,我这项目里有二三十个子类,这里我只列举4个:Action、ActionGroupColumn、Column、CompositeComponent,每一个子类...
获取已存在的dto的serialVersionUID
偶然间发现有个系统的对外交互的实体对象之前没有显示的声明该类的序列化版本id 。为了后续的代码升级考虑,打算对所有的dto 做一次升级 。 但是,考虑到之前这些dto对象已经被外围的多个系统使用 ,贸然的添加新的VersionId 可能会导致反序列化的失败 。稳妥起见, 打算先计算出系统dto目前在序列化时,系统默认生成的versionId , 然后把获得的id 添加到老的dto中。老的dto...
PO、VO、POJO、DTO、DAO、Service包等常见包的理解
POJOnnPOJO(Plain Ordinary Java Object),简单的Java对象,名字强调它是一个普通的java对象。nPOJO只有private属性以及这个属性的public的get和set方法,只能装载数据,也不能实现接口。nPOJO不是JavaBean,不承担任何特殊的角色,也不实现任何接口。nnnPOnnPO(Persistent Object)持久化对象,是与数据库中表相...
关于DTO分层作用
DTO作用
Java 中集合类型包含ArrayList、LinkedList、HashMap等类,下列描述正确的是(多选)?
A.ArrayList与LinkedList都实现了List接口B.删除元素时,ArrayList的表现更佳C.ArrayList的访问速度比LinkedList快D.HashMap实现Map接口,允许任何类型的键和值对象,并且允许键和值都为null答案:ACD扩展:了解一下Collection架构,以及集合工具类Collections,以及这两个的区别...
linkHashMap转实体对象
在项目中,我们所获取到的数据格式会出现这样的情况,ArraryList下面的数据是linkHashMap的格式,每个linkHashMap其实是对应的数据实体类,这时我们得到这种数据格式时,无法获取数据实体类里面的字段,无法get()到,因为是linkHashMap是键值对形式存在的,这时候我们需要对按其如下方法转换nn nnnList<StaffInfoBean> stafflist...
HashMap常见面试题
1.“你知道HashMap的工作原理吗?” “你知道HashMap的get()方法的工作原理吗?”nnHashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存Entry对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,...
java DTO 详解
java DTO 详解 java DTO 详解 java DTO 详解 java DTO 详解
DTO剖析
DTO定义n DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,泛指用于展示层与服务层之间的数据传输对象。 n 数据传输对象是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数
DTO快速完成单元测试
DTO快速完成单元测试nnnpackage com.ziyear.demo;nnimport java.io.File;nimport java.io.FileFilter;nimport java.io.IOException;nimport java.lang.reflect.Constructor;nimport java.lang.reflect.Field;nimport java.la...
bean、javabean、entity、dto、ejb、pojo都是些什么鬼
1、javaBeanrnjavaBean是一种Java语言写成的可重用组件。为写成JavaBean,类必须是具体和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。更多的是一种规范,即包含一组set和get方法的java对象。javaBean可以使应用程序更加面向对象,可以把数据封装起来,把应用的业务逻辑和显示逻辑分离开,降低了开发的复杂程度
关于集合
目录nn一、ArrayList和Vector的区别nn二、HashMap和Hashtable的区别nn三、List和Map的区别nn四、Collection和Collections的区别nn五、说出ArrayList,LinkedList的存储性能和特性nn六、Java中HashMap的key值要是为类对象则该类需要满足什么条件?nn七、ArrayList集合加入1万条数据,应该怎么提高效率nn八...
关于JavaWEB的一些想法
在开发web应用的时候,可以看到很多dto ,这些dto是什么呢?就是数据传输对象,他可以和前端进行适配,仅仅传输前端需要的东西。nn在工作中,我经常可以看到dto中和entity有大量属性的重复,甚至是完全一致,仅仅隐藏了几个属性,这些dto中重复的代码,我认为是可以进行优化的。前端目前已经走向了组件化,公司目前采用vue作为前端,前端的组件对于后端传输的数据的格式,是有要求的,因此如果能够使用...
Mybatis配置一对多DTO
DTO:BaseinfoPartyExt.javannnpackage com.eazytec.investsmart.model.baseInfo;nnimport java.util.List;nnimport com.eazytec.investsmart.dao.dataobject.SPBaseinfoPartyDO;nimport com.eazytec.investsmart.dao...
HashMap的常用方法
package Study0823;nnimport java.util.Collection;nimport java.util.HashMap;nimport java.util.Set;nnpublic class HasMapDemo {n public static void main(String[] args) {n HashMap<Integer,Stri...
mvc模式中关于DTO层的简单使用
1、概念:DTO:Data Transfer Object,数据传输对象,起到数据封装与隔离的作用2、应用介绍:在实际项目中,DTO的分在两层传输,一层是service层向controller层,这一层的DTO封装service执行结果,给controller,简化业务数据,只提取部分业务相关字段或补充处理相关字段,不同业务可能有不同的此类dto,具有业务相关性;另外一层是controller层向w
集合-LinkedHashMap源码详解(特有方法解析)以及HashMap与LinkedHashMap的不同
特点:n底层数据结构:数组加链表用来存储数据; header双向链表用来实现数据插入有序或者访问有序;nn继承关系:npublic class LinkedHashMap<K,V>n extends HashMap<K,V> //继承了HashMapn implements Map<K,V>//实现了Map接口n{
理解web项目中的VO,DTO,DO,PO
理解web项目中的VO,DTO,DO,PO想起第一次实习的时候被嫌弃VO,DTO,DO,PO不分voDODTOPOrn想起第一次实习的时候被嫌弃VO,DTO,DO,PO不分rn所以他们到底是什么呢?rn经过学习个人理解如下。rnvornvo就是我们在web的controller层返回的Object,rn在接口中这个VO都会被转成Json对象输出,view object。rnDOrnDO就是一个业务实体对象rnDTO...
fastjson与map之间的转换
fastjson是阿里巴巴软件工程师创造的数据解析方式,比json快十倍大概,并且,现在的安卓都用这个,是个趋势!rnrnrn我们都知道map集合是key-value:rn比如:Map dataMap = new HashMap();rndataMap.put("tag", "data");rndataMap.put("hospitalName", "宜都市妇幼保健院");rndataMap.pu
JDK1.7的HashMap链表死循环分析
在JDK1.7及以前的版本,如果在并发环境中使用HashMap保存数据,有可能会产生死循环的问题,造成cpu的使用率飙升。产生这个问题是因为JDK1.7及以前的版本中,HashMap扩容采用的是头插入,1.8做的改进是采用尾插法,所以不会造成死循环的问题。rn 首先,来看1.7扩容的代码:rnrn //进行扩容时方法rn void resize(int newCapacity) {rn ...
关于hashmap的散列程度分析
背景nn先从查找算法说起,我们知道常用的查找算法有顺序查找(时间复杂度为O(n)),二分查找(时间复杂度为O(log2n)),二叉查找树查找(O(longN)),有基于Hash表的算法时间复杂度只有O(1) n但是基于hash表的算法要额外维护一个hash表,这也是用空间换时间的例子吧.nnnn什么是HashMapnnhashMap可以拆分为hash和map,hash是一个函数,或者说算法,用来计...
面试题——HashMap和Hashtable的区别
共同点:nn 底层都是哈希算法,都是双列集合nnnnn区别:nn1,HashMap是线程不安全的,效率高,JDK1.2版本 n Hashtable是线程安全的,效率低,JDK1.0版本的 n2,HashMap可以存储null键和null值 n Hashtable不可以存储null键和null值nnnnpublic static void main(String[] args) {n ...
mybaits xml实现继承关系dto自定义对象关联查询(一对多)
服务结构:自定义dto类:场景:dto类继承OccInfo类,并且OccAttr为子类,集合类型。package com.example.demo.domain;nnimport lombok.Data;nnimport java.io.Serializable;nimport java.util.List;n@Datanpublic class OccInfoDetailDTO extends ...
HashMap HashSet 原理详解 与 对比
参考链接: n HashSet与HashMap的区别 n深入Java集合学习系列:HashMap的实现原理 nJava 集合系列10之 HashMap详细介绍(源码解析)和使用示例 nJava HashSet的实现原理详解nnnnHashmapnn1.原理nn数组链接结构,put原理:首先计算key的hash值,找到table数组中的位置,找到table[i]位置后,这个链表找是否有这个key值,...
关于DTO
我想问下DTO(数据传输对象)和struts的ActionForm到底有什么关系,看了些资料,还是不怎么明白?
Asp.mvc(二)~使用AutoMapper实现领域模型与DTO映射
Mongodb~Asp.Mvc+Mongodb(二)上一篇中介绍了Core, Data 以及 Services 层,在介绍 Presentation 层之前,我们需要了解下面几个知识点: nAutoMapper nAutofacn以及上篇博文中 Data 层未详细介绍的 WebActivatorEx nAutoMapper有时候,你需要将一种类型转换为另外一种类型,这种情况在mvc 项目中较为常见,
跟hashmap有关的算法题
题目描述: n  一个数组中除了两个数字只出现了一次外,其它数字都出现了两次。找出这两个数 n   n  示例: n  输入:{2 ,4 ,3 ,6 ,2 ,3} n  输出:4,6 n  package offer;import java.util.HashMap;nimport java.util.Iterator;public class Problem40 { public
STL的Map和Hashmap比较(面试)
【1】区别:n 1、构造函数 hash_map需要hash函数,等于函数;map只需要比较函数(小于函数)。n 2、存储结构 hash_map采用hash表存储,map一般采用红黑树实现。因此内存数据结构是不一样的。n 3、STL的map底层是用红黑树实现的,查找时间复杂度是log(n);n 4、STL的hash_map底层是用hash表存储的,查询时间复杂度是O(1);nn【2】什么时候用map...
Jdk8关于hashmap的新特性
关于jdk8中统计字符出现的个数,比较简便的方式,只在jdk8中可以使用,jdk7就不行!nnnpackage leetcode;nnimport org.junit.Test;nnimport java.util.ArrayList;nimport java.util.HashMap;nimport java.util.List;nn/**n * @author zhangyun * @vers...
使用Jackson实现Map与Bean互转
在使用 java 开发中,通常需要把 Map 转成 Bean,或把 Bean 转成 Map,这就用的工具类,在此推荐使用import com.fasterxml.jackson.databind.ObjectMapper;包下的ObjectMapper类,比 JsonObject 效率高,下面就列举了几种使用方法。nnnpom.xml<dependency>n <grou...
JAVA笔记 —— JDK1.8中 HashMap 的变化
1、数据结构的变化:红黑树nn  JDK1.8之前,HashMap的数据结构:数组 + 链表(单链表)nn  JDK1.8之后,HashMap的数据结构:数组 + 链表 + 红黑树n什么是红黑树?n2、table数组的类型:由Entry改成了Noden3、hash()函数算法修改:简化
关于hashmap和hashtable的区别,及如何使hashmap变得线程安全?(除了synchronized)---concurrentHashmap
HashMap 继承自AbstractMap类,底层数组+链表实现,可以存入null键及null值,线程不安全,而效率也比较高,初始容量默认为16,每次扩容会变为原来的2倍;nn当map中的元素超过entry数组的75%,触发扩容操作,为了减少链表的长度,元素分配更均匀;nn扩容针对整个map,每次扩容时,原来数组中的元素依次重新计算存放位置,并重新插入;nnHashtable 继承自Dictio...
HashMap的面试题你能回答几个?
1.HashMap用什么数据结构实现的?rnrn答:数组。什么样的数组?答:Node[] table这样的。Node是什么?答:看下图:rnrnrnrn也就是说这个数组每个元素都是个单向链表。rnrnrn2.HashMap的get过程是?rnrn答:先得到key的hash值,再把这个hash值与length-1按位与(取余),得到table数组的下标。取出这个下标值的key,与传入的key比较,如
一个简单的例子带你理解Hashmap
前言我知道大家都很熟悉hashmap,并且有事没事都会new一个,但是hashmap的一些特性大家都是看了忘,忘了再记,今天这个例子可以帮助大家很好的记住。场景用户提交一张试卷答案到服务端,post报文可精简为[{"question_id":"100001","answer":"A"},{"question_id":"100002","answer":"A"},{"question_id":"100
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 关于大数据培训 关于云计算