goldrain

金色雨点

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  37 随笔 :: 2 文章 :: 239 评论 :: 0 Trackbacks
 
DTO,Data Transfer Object.在以前的开发探讨中,我曾经认为DTO必须和PO(持久化对象)划清界线,要单独构建类.
 
从分层开发讲,DTO负责层间的数据传递,是必不可少的,但实际开发经验告诉我,大量的只有属性的DTO对象的存在,虽然把开发分层的清清楚楚,
然而这些DTO类却又的确贫血,不但使代码量急剧增加,而且随着数量的增大,DTO的类命名和属性命名也会难以规范.
 
其实象Hibernate这样的持久化框架,其PO已经是足够简单的POJO对象,可以设法利用其PO类构建DTO使用.请注意虽然这么做了,但从概念上DTO和PO仍然属于不同层,后者才是操作数据库的.
 
以前就有人这么尝试过,不过会遇到一个问题:就是在进行DTO到PO的属性拷贝时,无法区分哪些属性需要拷贝,哪些不需要.
 
这个问题其实可以解决的,用PO类构造DTO时,我们可以先对DTO的所有属性设置无用的初始值,然后再针对部分属性设置进前台传递的业务数据,这样就构造好了一个DTO对象了.在进行DTO到PO的属性拷贝时,可略过那些带无用初始值的属性,只拷贝带业务数据的属性.
 
使用了PO类来构造DTO,使我现在项目的代码精简了很多.
posted on 2007-02-25 16:02 goldrain 阅读(1739) 评论(2)  编辑  收藏

评论

# re: 对DTO的再认识: 用PO代替DTO 2007-02-25 21:58 零雨其蒙
"从概念上DTO和PO仍然属于不同层,后者才是操作数据库的."我觉得此话欠妥,PO应该是和表对应的,跟表是一种对应关系,而操作数据库的应该是DAO。最近在研究《UML和模式应用》,希望讨论之。
  回复  更多评论
  

# re: 对DTO的再认识: 用PO代替DTO 2007-02-26 11:49 goldrain
呵呵,我写文字的确不够严谨,其实是DAO用PO操作数据库  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: