java bean之间的互转

java bean之间的互转

需求:比如DO到DTO的转换。
考量要素:
1.简单的约定优于配置的同名属性copy
2.嵌套属性copy
3.flattern(扁平化)支持,要支持N层结构的copy到一层结构。
4.性能

如下这个网页,里面提到了好多工具。
http://stackoverflow.com/questions/1432764/any-tool-for-java-object-to-object-mapping
注意到许多工具采用静态化的生成java字节码的方式,这样和hardcode性能所差无几了。

[table]
|id|描述|是否支持flattern|最新版本|URL|
|Transmorph|只是不同类型间的互转,和需求相去胜远|N|3.1.3|https://github.com/cchabanois/transmorph
|Commons-Lang| ArrayUtils也只是不同类型间的互转|N|3.1|http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/ArrayUtils.html
|Commons-Convert| 也只是不同类型间的互转,目前在apache的sandbox里|N|1.0-SNAPSHOT|http://commons.apache.org/sandbox/commons-convert
|Spring framework|PropertyEditors也只是不同类型间的互转|N||
|EZMorph|能同类型同名属性批量copy|N|1.0.6|http://sourceforge.net/projects/ezmorph/
|Commons-BeanUtils|BeanUtils只能同类型同名属性批量copy,
PropertyUtils可以用类似ognl表达式copy嵌套的属性,但这个东西的性能被吐槽不好|Y|1.8.3|http://commons.apache.org/proper/commons-beanutils/
|Morph|没找到文档||1.1.1|http://sourceforge.net/projects/morph/
|Lorentz| 似乎死了|||
|OTOM| "Autumn"没找到文档|||https://java.net/projects/otom
|Smooks|没找到文档,貌似可以多种格式比如csv,java bean,jms消息互转,不是我们的需求场景|||https://github.com/smooks/smooks http://www.infoq.com/cn/articles/event-streaming-with-smooks
|JMapper|支持annotaion描述映射|N|1.2|http://code.google.com/p/jmapper-framework/
|cglib|BeanCopier, BulkBean,BeanMap,FastClass/FastMethod 采用生成字节码的方法,性能相当的高|N|2.3|sourceforge.net/projects/cglib
|ognl|ognl表达式肯定功能强大|Y|4.0-SNAPSHOT|http://commons.apache.org/proper/commons-ognl/
|mapping4java| 国人造的一个轮子,性能不错|N|1.0|http://code.google.com/p/mapping4java/
|Dozer| 貌似功能比较强大,可通过xml来配置映射,但性能不行|Y|5.4|https://github.com/DozerMapper/dozer
|Orika| 一个新秀,比Dozer性能好,可以一试,但没找到配xml的方法|Y|1.4.2|http://orika-mapper.github.io/orika-docs/index.html
|ModelMapper| 采用约定优于配置的方式自动映射|Y|0.5.6|http://modelmapper.org
[/table]

一些参考资料
[table]
|cglib相关性能测试对比|http://www.iteye.com/topic/801577|
|cglib源码学习交流|http://www.iteye.com/topic/799827|
|我也造了个轮子:BeanMapping(属性拷贝)|http://agapple.iteye.com/blog/1075671|
[/table]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值