-
关于 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个答案 按时间排序 按投票排序
-
采纳的答案
要对比性能问题的话,这个就要具体情况去测试才行
应该这么说,hashmap的灵活性比javabean强太多,它的key可以是任意的,而javabean定义了就无法修改,对于要求灵活性和可扩展性的系统应该选择hashmap
DTO,这个历史遗留模式,它本身就是多余的一层封装,如果系统本身设计得很好,其实是不会出现什么DTO的,
当然它也是有应用场景的嘛,比如GenericDTO<T>,利用泛型就能针对不同的类型都写在一个DTO里,不需要类型转换,
如果是hashmap的话,key-value的方式,还是都要类型转换的,2010年3月23日 08:18
-
DTO,从它的意思上就是数据传输对象,也就是VO值对象,说白了就是本身不带业务逻辑方法的纯数据,这个dto在几年前还算是比较流行的一种设计模式,但现在至少我做的项目里很少有它的影子在了,
其实关键是看你的系统架构是怎么分层的,到底需不需要在实体对象上封装这么一层DTO2010年3月15日 20:19
相关推荐
import java.util.HashMap; import java.util.Map; public class Pojo2MapUtil { public static <T> Map, Object> pojoToMap(T pojo) throws IllegalAccessException { Map, Object> map = new HashMap(); ...
Dto从Java API的HashMap类扩展,用于通过键封装任何类型的信息类型:key_i.key_ij.key_ijk ....:只要知道用于对象访问的键key_i.key_ij.key_ijk ....,任何J2EE功能链中的任何组件都可以访问DTO。逻辑和持久性逻辑...
Map, String> map = new HashMap(); map.put("name1", value1); dto.setMap(map); List<DTO> lst = new ArrayList(); lst.add(dto); session.setAttribute("listTop", lst); ``` **JSP:** ```jsp ...
import java.util.HashMap; import java.util.List; import java.util.Map; // 其他导入语句... public class Monitor { public void setDealers(List<Dealer> dealers) { // 方法实现... } public void ...
**购物车实现原理**:在用户会话(session)中使用HashMap存储购物车信息,键(key)为商品ID,值(value)为一个包含商品ID、数量、单价和总价的DTO(Data Transfer Object)。同时,使用List来记录用户点击过的...
【正则表达式】 正则表达式是一种强大的文本匹配工具...层间数据传输主要探讨DTO(Data Transfer Object),它是数据传输的载体,分为域DTO和定制DTO,以及数据传送哈希表和行集,用于不同层次或服务之间的数据交换。
- **关于元数据**: - **元数据示例**:展示了元数据的具体形式和内容。 - **元元数据**:即元数据的元数据,用于描述元数据本身的结构和语义。 - **设计时与运行时**:区分元数据在设计阶段和运行阶段的不同作用...
查询结果集:不推荐直接使用`HashMap`或`Hashtable`,而应定义特定的数据传输对象(DTO)。 - D. 返回参数:即使属性与数据库字段完全匹配,也应定义明确的对象模型。 ### 索引效率 5. **索引效率**: - A. 使用...
在Java编程中,JavaBean是一种遵循特定规则的对象,通常用于数据封装和作为数据传输对象(DTO)。将JavaBean转换为Map是一种常见的需求,特别是在处理数据绑定、JSON序列化或者存储时。标题“Desktop_javaBean转换...
通过将每个员工添加到Hashmap中来删除重复的值。 哈希图使用员工ID作为关键字,因此搜索时间为O(1)。 一旦删除了重复的值,生成的雇员将以数组列表的形式返回。 这样做的原因是,可以使用subList函数更轻松地将...
对于自定义类,尤其是使用了数据传输对象(DTO)的情况下,未正确重写equals和hashCode可能导致内存泄漏。当一个对象被放入哈希集合(如HashSet或HashMap)时,其equals和hashCode方法用于确定对象的身份。如果这两...
掌握递归算法,熟悉集合类(如ArrayList, HashMap),泛型的使用,自动装箱与拆箱机制,以及Annotation的应用。 2. **IO 多线程**:学习Java的输入输出系统,包括文件操作和网络IO。理解并实现多线程编程,包括线程...
在Web应用中,JavaBean常用来作为数据传输对象(DTO)或模型对象(Model),存储表单提交的数据。 Servlet在接收到HTTP请求后,可以通过`HttpServletRequest`对象获取到请求参数。这些参数通常是键值对形式,对应于...
深入理解内存分析,了解递归操作,掌握集合类(如ArrayList、LinkedList、HashMap等),泛型的使用,自动装箱拆箱原理,以及Annotation(注解)的使用。此外,还需要学习多线程编程,包括线程的创建、同步...
2. **J2EE模式**:J2EE(Java Platform, Enterprise Edition)的五种常见设计模式包括MVC(Model-View-Controller)、DAO(Data Access Object)、DTO(Data Transfer Object)、Facade(外观模式)和Observer(观察...
Map, Object> 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){ ...
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...
HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口,主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上可能高于Hashtable。 HashMap允许将null作为一个entry的key或者...