0 0

关于 DTO VS HashMap5

Hello,大侠们,我对DTO/VO有个问题:

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





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

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


谢谢 lovewhzlq !为啥现在很少了? 这正是我想知道的。我在web 项目里也很少用这个,多了层这个多了层多了很多麻烦,实在要分我觉得都装到hashMap 里面就可以了。但问题是我得说服别人也不要用这个。

还有个问题,你说 hashMap 的性能高还是 一个 javabean 的性能、以及内存占用高?
2010年3月14日 11:59

2个答案 按时间排序 按投票排序

0 0

采纳的答案

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

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

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

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

2010年3月23日 08:18
0 0

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

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

2010年3月15日 20:19

相关推荐

    java Pojo转Map

    import java.util.HashMap; import java.util.Map; public class Pojo2MapUtil { public static &lt;T&gt; Map, Object&gt; pojoToMap(T pojo) throws IllegalAccessException { Map, Object&gt; map = new HashMap(); ...

    Mvc Infraestructure:J2EE的可序列化数据传输对象/通用Dao-开源

    Dto从Java API的HashMap类扩展,用于通过键封装任何类型的信息类型:key_i.key_ij.key_ijk ....:只要知道用于对象访问的键key_i.key_ij.key_ijk ....,任何J2EE功能链中的任何组件都可以访问DTO。逻辑和持久性逻辑...

    Struts开发技术

    Map, String&gt; map = new HashMap(); map.put("name1", value1); dto.setMap(map); List&lt;DTO&gt; lst = new ArrayList(); lst.add(dto); session.setAttribute("listTop", lst); ``` **JSP:** ```jsp ...

    dwr实战

    import java.util.HashMap; import java.util.List; import java.util.Map; // 其他导入语句... public class Monitor { public void setDealers(List&lt;Dealer&gt; dealers) { // 方法实现... } public void ...

    java购物车例子struts+hibernate+spring

    **购物车实现原理**:在用户会话(session)中使用HashMap存储购物车信息,键(key)为商品ID,值(value)为一个包含商品ID、数量、单价和总价的DTO(Data Transfer Object)。同时,使用List来记录用户点击过的...

    J2EE开发全程实录(JAVA项目开发)

    【正则表达式】 正则表达式是一种强大的文本匹配工具...层间数据传输主要探讨DTO(Data Transfer Object),它是数据传输的载体,分为域DTO和定制DTO,以及数据传送哈希表和行集,用于不同层次或服务之间的数据交换。

    J2EE开发全程实录PDF J2EE开发全程实录PDF

    - **关于元数据**: - **元数据示例**:展示了元数据的具体形式和内容。 - **元元数据**:即元数据的元数据,用于描述元数据本身的结构和语义。 - **设计时与运行时**:区分元数据在设计阶段和运行阶段的不同作用...

    阿里巴巴考试题及答案(含原题)

    查询结果集:不推荐直接使用`HashMap`或`Hashtable`,而应定义特定的数据传输对象(DTO)。 - D. 返回参数:即使属性与数据库字段完全匹配,也应定义明确的对象模型。 ### 索引效率 5. **索引效率**: - A. 使用...

    Desktop_javaBean转换Map工具_

    在Java编程中,JavaBean是一种遵循特定规则的对象,通常用于数据封装和作为数据传输对象(DTO)。将JavaBean转换为Map是一种常见的需求,特别是在处理数据绑定、JSON序列化或者存储时。标题“Desktop_javaBean转换...

    DataMigration:该项目的目标是尽快将CSV中存储的员工列表迁移到SQL数据库中

    通过将每个员工添加到Hashmap中来删除重复的值。 哈希图使用员工ID作为关键字,因此搜索时间为O(1)。 一旦删除了重复的值,生成的雇员将以数组列表的形式返回。 这样做的原因是,可以使用subList函数更轻松地将...

    hashCode内存溢出和内存泄漏的问题解决.docx

    对于自定义类,尤其是使用了数据传输对象(DTO)的情况下,未正确重写equals和hashCode可能导致内存泄漏。当一个对象被放入哈希集合(如HashSet或HashMap)时,其equals和hashCode方法用于确定对象的身份。如果这两...

    JAVA自学之路 七路线图明细

    掌握递归算法,熟悉集合类(如ArrayList, HashMap),泛型的使用,自动装箱与拆箱机制,以及Annotation的应用。 2. **IO 多线程**:学习Java的输入输出系统,包括文件操作和网络IO。理解并实现多线程编程,包括线程...

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    在Web应用中,JavaBean常用来作为数据传输对象(DTO)或模型对象(Model),存储表单提交的数据。 Servlet在接收到HTTP请求后,可以通过`HttpServletRequest`对象获取到请求参数。这些参数通常是键值对形式,对应于...

    java自学之路num1

    深入理解内存分析,了解递归操作,掌握集合类(如ArrayList、LinkedList、HashMap等),泛型的使用,自动装箱拆箱原理,以及Annotation(注解)的使用。此外,还需要学习多线程编程,包括线程的创建、同步...

    经典java面试题下载

    2. **J2EE模式**:J2EE(Java Platform, Enterprise Edition)的五种常见设计模式包括MVC(Model-View-Controller)、DAO(Data Access Object)、DTO(Data Transfer Object)、Facade(外观模式)和Observer(观察...

    json与JavaBean、Map和list之间的转换问题.doc

    Map, Object&gt; map = new HashMap(); map.put("name", "json"); map.put("bool", Boolean.TRUE); map.put("int", new Integer(3)); map.put("arr", new String[] {"a", "b"}); map.put("func", "function(i){ ...

    超级有影响力霸气的Java面试题大全文档

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...

    java 面试题 总结

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...

Global site tag (gtag.js) - Google Analytics