用于java对象到对象映射的任何工具?
我正在尝试使用java将DO转换为DTO,并在开始编写自己的代码之前查找自动化工具。 我只是想知道是否有任何免费的工具可用于相同的。
你可以尝试推土机 。
推土机是Java Bean到Java Bean的映射器,recursion地将数据从一个对象复制到另一个对象。 通常,这些Java Bean将是不同的复杂types。
推土机支持简单的属性映射,复杂types映射,双向映射,隐式显式映射以及recursion映射。 这包括也需要在元素级映射的映射集合属性。
附近有一些图书馆:
-
Transmorph :Transmorph是一个免费的Java库,用于将一个types的Java对象转换为另一个types的对象(使用另一个签名,可能参数化)。
-
EZMorph :EZMorph是简单的Java库,用于将对象转换为另一个对象。 它支持基元和对象的转换,multidimensional array和DynaBeans的转换
-
Commons-BeanUtils :ConvertUtils – >将string标量值转换为指定Class,String数组的对象到指定Class的数组的实用方法。
-
Commons-Lang :ArrayUtils – >对数组,基本数组(如int [])和原始包装数组(如Integer [])的操作。
-
Commons-Convert :Commons-Convert旨在提供一个专用于将一种types的对象转换为另一种types的任务的库。 第一阶段将着重于对象到string和string到对象的转换。
-
Morph :Morph是一个简化应用程序内部互操作性的Java框架。 随着信息stream经应用程序,它会经历多次转换。 Morph提供了实现这些转换的标准方法。
-
洛伦兹 :洛伦兹是一个通用的对象到对象的转换框架。它提供了一个简单的API来将一种types的Java对象转换为另一种types的对象。(似乎死了) -
Spring框架 :Spring对PropertyEditors有很好的支持,也可以用来将对象转换为Strings。
-
推土机 :推土机是一个function强大,但简单的Java Bean到Java Bean的映射器,recursion地将数据从一个对象复制到另一个对象。 通常,这些Java Bean将是不同的复杂types。
-
ModelMapper :ModelMapper是一个智能的对象映射框架,可以自动将对象映射到对方。 它使用基于约定的方法来映射对象,同时提供一个简单的重构安全API来处理特定的用例。
-
OTOM :使用OTOM,您可以将任何对象的任何数据复制到任何其他对象。可能性是无止境。欢迎来到“秋天”。(似乎死了) -
Smooks :Smooks JavaBean Cartridge允许您从消息数据(即绑定数据)创build并填充Java对象(由superfilin在注释中build议)。
-
MapStruct :MapStruct是一个用于bean映射的编译时代码生成器,可在运行时实现快速(不使用reflection或类似),无依赖和types安全的映射代码。
Transmorph(相当新近),EZMorph,Dozer,ModelMapper,OTOM都是严肃的候选人。 推土机似乎是最活跃的项目(也许是最先进的)。
另一个是Orika – https://github.com/orika-mapper/orika
Orika是一个Java Bean映射框架,recursion地将数据从一个对象复制到另一个对象。 开发多层应用程序时可能非常有用。
Orika尽可能将重点放在自动化上,同时在需要时通过configuration和扩展提供定制。
Orika使开发人员能够:
- 映射复杂和深度结构的对象
- 通过将嵌套属性映射到顶层属性来“展开”或“展开”对象,反之亦然
- 快速创build映射器,并应用自定义来控制一些或全部映射
- 创build转换器,以完全控制对象图中任何位置的特定对象集合的映射 – 按types,甚至按特定的属性名称
- 处理代理或增强对象(如Hibernate或各种模拟框架)
- 使用一种configuration应用双向映射
- 映射到目标抽象类或接口的适当具体类的实例
- 处理反向映射
- 处理JavaBean规范之外的复杂约定。
Orika使用字节码生成来创build快速的映射器,而且开销很小。
ModelMapper是另一个值得检查的库。 ModelMapper的devise与其他库的不同之处在于:
- 通过智能地匹配源和目标属性自动映射对象模型
- 提供重构安全映射API,使用实际代码映射字段和方法而不是使用string
- 使用基于约定的configuration来简化自定义场景的处理
查看ModelMapper网站了解更多信息:
使用Apache公共beanutils:
static void copyProperties(Object dest, Object orig)
在属性名称相同的所有情况下,从源bean到目标bean复制属性值。
还有一个Java映射引擎/框架Nomin: http : //nomin.sourceforge.net 。
我build议你尝试JMapper框架 。
它是Java bean映射器的Java bean,允许您使用注释和/或XMLdynamic地执行数据的传递。
使用JMapper你可以:
- 创build和丰富目标对象
- 将特定的逻辑应用于映射
- 自动pipe理XML文件
- 实现1到N和N到1的关系
- 实施明确的转换
- 应用inheritance的configuration
我很高兴将Moo添加为一个选项,虽然显然我偏向于: http : //geoffreywiseman.github.com/Moo/
对于简单的情况来说使用起来非常简单,对于更复杂的情况来说也是合理的,尽pipe还有一些地方我可以想象为了进一步的复杂性而加以改进。
您也可以尝试基于Dozer的映射框架,但是使用Excel映射声明。 他们有一些工具和其他很酷的function。 检查http://openl-tablets.sf.net/mapper
试试OMapper .. http://code.google.com/p/omapper/