新的起点 新的开始

快乐生活 !

JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧

   分析多层架构的JEE系统,经常存在JavaBean直接的拷贝。比如在DAO层,我们通过POJO取得业务层需要的数据,将这些数据传递给Service层的VO。POJO与VO就存在典型的值拷贝。还有就是Webservice,客户端调用Webservice,也存在将大量返回值映射到相应的JavaBean里。呵呵 我们项目就是这个需求。
    典型的解决方案就是手动拷贝,弊端很明显,代码中充斥大量Set Get方法,真正的业务没埋藏与值的拷贝之中。另一种方案就是使用BeanUtil,但BeanUtil不够很好的灵活性,又时候还不得不手动拷贝。
     对于这种重复没有实际意义的拷贝难道没有终结解决方案吗?! Dozer 一把JavaBean利器。(http://dozer.sourceforge.net/)

    什么是Dozer?
    看看官方的定义:
 Dozer is a Java Bean to Java Bean mapper that recursively copies data from one object to 
another. Typically, these Java Beans will be of different complex types.

Dozer supports simple property mapping, complextype mapping, bi
-directional mapping, implicitexplicit mapping, as well as recursive
mapping.This includes mapping collection attributes that also need mapping at the element level.
    注意:Dozer支持简单类型 复杂类型的双向递归映射。
    
    如何使用呢? 类似BeanUtil 很简单,如果两个javaBean之间,属性名相同,类型为基本类型,那么下面代码就OK了,基本没有学习曲线。
   

Mapper mapper = new DozerBeanMapper();

DestinationObject destObject 
= mapper.map(sourceObject, DestinationObject.class);
             or
DestinationObject destObject 
= new DestinationObject();
mapper.map(sourceObject, destObject);
   在后续的的内容中,我会介绍如何配置复杂的Map,如何自定义Map,如何获得Map的统计数据等。JavaBean之间拷贝利器-Dozer(2)  映射数据类型不一致,级联映射与自定义映射

  

posted on 2009-04-12 22:11 advincenting 阅读(3147) 评论(10)  编辑  收藏

评论

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-12 23:11 CoderDream

不错,有空研究一下!  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧[未登录] 2009-04-13 08:35 abc

好东西,我以前也为这个犯愁呢!  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-13 10:05 rmn190

如果sourceObject和DestinationObject里属性名不同或大多属性性相同而只有几个不同,Dozer能不能支持针对这样的问题的问题?  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-13 11:02 cnodin

我有点奇怪,实体用一个不就好了吗?为啥用POJO,又要用VO呢?  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧[未登录] 2009-04-13 13:35 rex

dozer效率比较慢的  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-13 13:51 隔叶黄莺

好的,收藏一下  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-13 22:19

BeanUtil这个东西不适合用在Proxy出来的对象
Dozer可以

这个开源组件很灵活,如果属性名相同,基本不需要配置,
如果两个类的属性名不同,可能就需要一些配置。

总体来说,很不错的
性能上也慢不到哪里去。  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-13 22:21

我有点奇怪,实体用一个不就好了吗?为啥用POJO,又要用VO呢?

我还觉得你有点奇怪,呵呵。  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-13 22:37 advincenting

为啥使用POJO,VO 呵呵,JEE架构是多层的啊,如何屏蔽高层对底层的依赖呢,当然通过值传递了。用过Spring Hiberante Ibatis 的朋友就应该明白吧。  回复  更多评论   

# re: JavaBean之间拷贝利器-Dozer 如果现在还是原始的手动拷贝或者使用BeanUtil 赶紧换吧 2009-04-14 19:07 wangbing

好东西 用上了  回复  更多评论   


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


网站导航:
 

公告

Locations of visitors to this page

导航

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

统计

常用链接

留言簿(13)

随笔分类(71)

随笔档案(179)

文章档案(13)

新闻分类

IT人的英语学习网站

JAVA站点

优秀个人博客链接

官网学习站点

生活工作站点

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜