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 | 只是不同类型间的互转,和需求相去胜远 | 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 |
一些参考资料
cglib相关性能测试对比 | http://www.iteye.com/topic/801577 |
cglib源码学习交流 | http://www.iteye.com/topic/799827 |
我也造了个轮子:BeanMapping(属性拷贝) | http://agapple.iteye.com/blog/1075671 |
分享到:
相关推荐
在给定的标题“通过java反射实现map与bean之间互转”中,我们要探讨的是如何利用Java反射机制将Map对象转换为Java Bean对象,以及反过来,将Java Bean对象转换为Map对象。这个过程在数据处理和序列化中非常常见。 ...
将Java Bean与XML进行互转是常见的需求,这有助于在不同系统间传递数据或者持久化对象状态。本篇将详细介绍两种常用的Java XML与Bean互转方法:XStream库和JAXB(Java Architecture for XML Binding)框架。 一、...
在Java编程中,Java Bean和Map是两种常用的...总的来说,Java Bean和Map之间的互转在Java开发中非常常见,尤其是在数据交换和视图渲染时。理解并掌握这两种数据结构的转换技巧,有助于提升开发效率和代码的可维护性。
标题“任意深度xml与bean的互转”涉及的技术点是关于如何处理任意层次结构的XML文档,并将其转换为Java Bean对象,反之亦然。这种转换对于数据的解析和存储具有重要的实际意义。 描述中提到的“属性中不管是基础...
通过以上内容,我们可以看到JAXB如何简化了XML和Java Bean之间的转换,使得开发人员能够更加专注于业务逻辑,而不是数据序列化和反序列化的细节。理解并熟练运用JAXB,对于处理XML数据的Java开发者来说,是一项重要...
在给定的"jaxb XMl和BEAN互转实例(内含jar包)"中,我们有一个实用工具类,它简化了使用JAXB进行XML与BEAN对象之间转换的过程。 在Java编程中,BEAN通常指的是符合JavaBeans规范的简单Java类,它们通常包含getter...
Java中的Apache Commons Betwixt库提供了一个简单的方法来映射Java Bean对象和XML文档之间的数据,使得在处理数据交换时能轻松地实现bean到XML的转换和XML到bean的反转换。本篇文章将深入探讨如何使用Commons ...
主要用于开发中常见的xml与javabean之间的数据互转,减少重复代码的编写,支持xml对应字段中的集合数据类型(只能为list)。现不支持bean转换成xml时不指定字段所对应xml元素结点名称的情况,所有的字段必需指定生成...
而JAXB(Java Architecture for XML Binding)是Java提供的一种标准API,它允许我们轻松地在Java对象(javabean)和XML文档之间进行转换。通过JAXB,开发者可以避免手动编写XML解析和序列化代码,极大地提高了开发...
本篇文章将深入探讨如何使用JAXBUtil来实现XML和bean之间的互转,并基于提供的文件`JaxbObjectAndXmlUtil.java`和`ReqMsBean.java`进行实例解析。 首先,我们来看`ReqMsBean.java`,这是一个简单的Java Bean定义,...
### JSON与Java对象互转:深入理解与实践 在现代软件开发中,JSON(JavaScript Object Notation)作为数据交换的标准格式之一,其轻量级、易于读写的特点使其成为跨平台数据传输的首选。Java作为一种广泛使用的编程...
本篇将详细讲解XML的解析方式及其在Java中的应用,特别是如何使用XStream库进行JavaBean与XML之间的互转。 1. **XML解析方式** - DOM解析:Document Object Model,它一次性加载整个XML文档到内存,形成一棵树形...
Java与JSON之间的转换是开发过程中常见的任务,尤其是在Web服务或者数据交换中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,我们可以...
Java对象与XML之间的转换是Java开发中常见的需求,特别是在数据交换、配置文件存储或Web服务交互等场景。本文将深入探讨如何实现Java对象到XML以及XML到Java对象的转换。 首先,Java对象到XML的转换通常涉及到Java...
而在Java编程语言中,处理JSON数据通常涉及到将JSON字符串或对象转换为Java对象(如`Map`、`List`、自定义Java Bean类等),以及反之亦然的过程。 #### JSON与Java数据类型的对应关系 1. **JSON Object <-> Java ...
【EJB】企业Java Bean(Enterprise JavaBeans,简称EJB)是Java EE平台的一部分,主要用于构建分布式的企业级应用程序。EJB提供了服务器端组件模型,这些组件在Java EE应用服务器中运行,处理业务逻辑,实现了安全性...
- Gson库同样提供了类似的`toJson`和`fromJson`方法,方便地在Java对象和JSON字符串之间转换。 4. JSON和XML的比较: - JSON通常被认为比XML更轻量级,解析和生成更快,更适合在网络传输中使用。 - XML提供更...
1. **JSON与Java对象的互转**: - JSON对象可以映射为Java对象,如HashMap、ArrayList等。JSON字符串到Java对象的转换通常通过反序列化实现,而Java对象到JSON字符串的转换则称为序列化。 - json-lib库提供了一套...
Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...
通过fastjson实现了JavaBean,list,MAP,list等格式与json格式之间的转换,已经附带fastjson的包,包的版本为fastjson-1.1.36.jar