`
xpenxpen
  • 浏览: 703330 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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性能所差无几了。

id描述是否支持flattern最新版本URL
Transmorph只是不同类型间的互转,和需求相去胜远N3.1.3https://github.com/cchabanois/transmorph
Commons-Lang ArrayUtils也只是不同类型间的互转N3.1http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/ArrayUtils.html
Commons-Convert 也只是不同类型间的互转,目前在apache的sandbox里N1.0-SNAPSHOThttp://commons.apache.org/sandbox/commons-convert
Spring frameworkPropertyEditors也只是不同类型间的互转N
EZMorph能同类型同名属性批量copyN1.0.6http://sourceforge.net/projects/ezmorph/
Commons-BeanUtilsBeanUtils只能同类型同名属性批量copy,PropertyUtils可以用类似ognl表达式copy嵌套的属性,但这个东西的性能被吐槽不好Y1.8.3http://commons.apache.org/proper/commons-beanutils/
Morph没找到文档1.1.1http://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描述映射N1.2http://code.google.com/p/jmapper-framework/
cglibBeanCopier, BulkBean,BeanMap,FastClass/FastMethod 采用生成字节码的方法,性能相当的高N2.3sourceforge.net/projects/cglib
ognlognl表达式肯定功能强大Y4.0-SNAPSHOThttp://commons.apache.org/proper/commons-ognl/
mapping4java 国人造的一个轮子,性能不错N1.0http://code.google.com/p/mapping4java/
Dozer 貌似功能比较强大,可通过xml来配置映射,但性能不行Y5.4https://github.com/DozerMapper/dozer
Orika 一个新秀,比Dozer性能好,可以一试,但没找到配xml的方法Y1.4.2http://orika-mapper.github.io/orika-docs/index.html
ModelMapper 采用约定优于配置的方式自动映射Y0.5.6http://modelmapper.org


一些参考资料
cglib相关性能测试对比http://www.iteye.com/topic/801577
cglib源码学习交流http://www.iteye.com/topic/799827
我也造了个轮子:BeanMapping(属性拷贝)http://agapple.iteye.com/blog/1075671
分享到:
评论

相关推荐

    java bean和map之间的互转

    java bean和map之间的互转,后台方便为前台构造数据,必须将相应的java bean 转换为map,或将map集合转换为java bean.

    通过java反射实现map与bean之间互转

    NULL 博文链接:https://xingguangsixian.iteye.com/blog/2041531

    利用JAXB进行xml和javabean之间转换

    NULL 博文链接:https://luyuwww.iteye.com/blog/1988355

    xml与javabean之间的互转

    主要用于开发中常见的xml与javabean之间的数据互转,减少重复代码的编写,支持xml对应字段中的集合数据类型(只能为list)。现不支持bean转换成xml时不指定字段所对应xml元素结点名称的情况,所有的字段必需指定生成...

    通过fastjson实现各种格式与json之间的转换

    通过fastjson实现了JavaBean,list,MAP,list等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar

    java源码包---java 源码 大量 实例

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...

    java源码包4

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    JAVA上百实例源码以及开源项目

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...

    java源码包3

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    JAVA上百实例源码以及开源项目源代码

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...

    java源码包2

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    我积攒的java工具类 基本满足开发需要的工具类

    D:\002 我的工具类\009 bean和map互转\XBeanUtils.java D:\002 我的工具类\010 操作图片 D:\002 我的工具类\010 操作图片\ImageUtils.java D:\002 我的工具类\010 操作图片\整体图片操作 D:\002 我的工具类\010 操作...

    java 面试题 总结

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用...

    json相关jar包.zip

    下面进入正题,介绍在JAVA中JSON和java对象之间的互转。 要想实现JSON和java对象之间的互转,需要借助第三方jar包,这里使用json-lib这个jar包,下载地址为:https://sourceforge.net/projects/json-lib/,json-...

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

    但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地...

    BeanUtil工具类

    BeanUtil 主要用于实体Bean和Map之间的互转,使用方便,是一个不可多得的工具类哦

    Spring-Rest-Jackson-Json-Data-Binding:代表性状态转移是一种软件体系结构样式,它定义了一组用于创建Web服务的约束。 符合REST架构风格的Web服务(称为Rest API)可在Internet上的计算机系统之间提供互操作性。

    符合REST架构风格的Web服务(称为Rest API)可在Internet上的计算机系统之间提供互操作性。我们在杰克逊的帮助下使用Sping框架实现了该服务。 微服务 春天休息 介绍 这个项目展示了测试Spring Boot Application的...

Global site tag (gtag.js) - Google Analytics