用于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网站了解更多信息:

http://modelmapper.org

使用Apache公共beanutils:

static void copyProperties(Object dest, Object orig)在属性名称相同的所有情况下,从源bean到目标bean复制属性值。

http://commons.apache.org/proper/commons-beanutils/

还有一个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