用于java对象到对象映射的任何工具?

时间:2009-09-16 12:50:40

标签: java mapping dto

我正在尝试使用java将DO转换为DTO,并在开始编写自己的工具之前寻找自动化工具。我只是想知道是否有相同的免费工具。

9 个答案:

答案 0 :(得分:371)

那里有一些图书馆:

  • Commons-BeanUtils:ConvertUtils - >用于将String标量值转换为指定Class的对象的实用程序方法,String数组转换为指定Class的数组。

  • Commons-Lang:ArrayUtils - >对数组,原始数组(如int [])和原始包装数组(如Integer [])的操作。

  • Spring framework:Spring对PropertyEditors有很好的支持,也可以用来将对象转换为Strings。

  • Dozer:Dozer是一个功能强大但又简单的Java Bean到Java Bean映射器,可以递归地将数据从一个对象复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。

  • ModelMapper:ModelMapper是一个智能对象映射框架,可以自动将对象相互映射。它使用基于约定的方法映射对象,同时提供简单的重构安全API来处理特定用例。

  • MapStruct:MapStruct是一个用于bean映射的编译时代码生成器,可以在运行时快速(不使用反射或类似的),无依赖和类型安全的映射代码。 p>

  • Orika:Orika使用字节码生成以最小的开销创建快速映射器。

  • Selma:用于映射的编译时代码生成器

  • JMapper:使用注释,XML或API生成Bean映射器

  • Smooks:Smooks JavaBean Cartridge允许您从消息数据中创建和填充Java对象(即将数据绑定到)(在评论中由superfilin建议)。 / strike>(不再处于积极开发阶段)

  • Commons-Convert:Commons-Convert旨在提供一个专门用于将一种类型的对象转换为另一种类型的任务的库。第一阶段将重点关注Object to String和String to Object转换。 (似乎死了,最后更新2010)

  • Transmorph:Transmorph是一个免费的java库,用于将一种类型的Java对象转换为另一种类型的对象(带有另一种签名,可能参数化)。(似乎死了,最后更新2013年)

  • EZMorph:EZMorph是一个简单的java库,用于将Object转换为另一个Object。它支持基元和对象的转换,多维数组和DynaBeans转换(似乎死了,最后更新2008)

  • Morph:Morph是一个简化应用程序内部互操作性的Java框架。当信息流经应用程序时,它会经历多次转换。 Morph提供了实现这些转换的标准方法。(似乎死了,2008年最新更新)

  • Lorentz:Lorentz是一个通用的对象到对象转换框架。它提供了一个简单的API,用于将一种类型的Java对象转换为另一种类型的对象。(似乎已死)

  • OTOM:使用OTOM,您可以将任何对象的任何数据复制到任何其他对象。可能性是无止境。欢迎来到“秋天”。(似乎死了)

答案 1 :(得分:104)

您可以尝试Dozer

  

Dozer是Java Bean的Java Bean   递归复制数据的映射器   从一个对象到另一个对象。通常情况下,   这些Java Bean会有所不同   复杂的类型。

     

Dozer支持简单属性   映射,复杂类型映射,   双向映射,   隐式显式映射,以及   递归映射。这包括   映射集合属性   还需要在元素上进行映射   水平。

答案 2 :(得分:30)

另一个是Orika - https://github.com/orika-mapper/orika

  

Orika是一个Java Bean映射框架,可以将数据从一个对象递归复制(以及其他功能)。在开发多层应用程序时它非常有用。

     

Orika专注于尽可能自动化,同时根据需要通过配置和扩展提供自定义。

     

Orika使开发人员能够:

     
      
  • 映射复杂且深度结构化的对象
  •   
  • 通过将嵌套属性映射到顶级属性来“展平”或“展开”对象,反之亦然
  •   
  • 即时创建映射器,并应用自定义来控制部分或全部映射
  •   
  • 创建转换器,以完全控制对象图中任意位置的特定对象集的映射 - 按类型,甚至按特定属性名称
  •   
  • 处理代理或增强对象(如Hibernate或各种模拟框架)
  •   
  • 使用一种配置应用双向映射
  •   
  • 映射到目标抽象类或接口的适当具体类的实例
  •   
  • 处理反向映射
  •   
  • 处理JavaBean规范之外的复杂约定。
  •   
     

Orika使用字节码生成来创建具有最小开销的快速映射器。

答案 3 :(得分:21)

ModelMapper是值得一试的另一个图书馆。 ModelMapper的设计与其他库的不同之处在于:

  • 通过智能匹配源和目标属性自动映射对象模型
  • 提供重构安全映射API,使用实际代码映射字段和方法,而不是使用字符串
  • 利用基于约定的配置来简单处理自定义方案

查看ModelMapper网站了解更多信息:

http://modelmapper.org

答案 4 :(得分:13)

使用Apache commons beanutils:

  

static void copyProperties(Object dest, Object orig)   -Copy从原始bean到目标bean的属性值   属性名称为的情况   相同。

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

答案 5 :(得分:6)

还有一个Java映射引擎/框架Nomin:http://nomin.sourceforge.net

答案 6 :(得分:3)

我建议你试试JMapper Framework

它是Java bean映射器的Java bean,允许您使用注释和/或XML动态执行数据传递。

使用JMapper,您可以:

  • 创建和丰富目标对象
  • 将特定逻辑应用于映射
  • 自动管理XML文件
  • 实施1到N和N到1的关系
  • 实施显式转化
  • 应用继承的配置

答案 7 :(得分:2)

我很高兴添加Moo作为一种选择,虽然显然我对它有偏见: http://geoffreywiseman.github.com/Moo/

对于简单的案例来说,这是非常容易使用的,对于更复杂的案例来说是合理的,尽管我仍然可以想象在某些方面可以进一步增强它的复杂性。

答案 8 :(得分:2)

您也可以尝试使用基于Dozer的映射框架,但使用Excel映射声明。他们有一些工具和额外的酷功能。 查看http://openl-tablets.sf.net/mapper