22

我试图找出一种简单的方法来将 DTO 映射到没有样板代码的实体。当我考虑使用推土机时,它似乎需要大量的 xml 配置。有没有人见过使用 DSL 在纯 Java 中配置 bean 映射的推土机替代方案?

理想情况下,我希望找到一个受 Guice 做事方式启发的 bean 映射器。

4

3 回答 3

16

看看奥里卡

Orika 是一个 Java Bean 映射框架,它可以递归地将数据从一个对象复制到另一个对象。它在开发多层应用程序时非常有用。

于 2012-04-09T10:58:54.540 回答
11

我也在寻找替代品。

是对不同选项的很好的介绍。

于 2009-12-09T21:52:01.780 回答
4

从我的角度来看,总是需要映射一些特殊属性的配置或 java 代码。

在这里,我想举DODTO例子

DO:{
    id: "id",
    name:"name",
    doName1: "doName1",
    nestedObj: {
        id: "nestedObjId",
        name: "nestedObjName"
    }
}

DTO{
    id: "",
    name: "",
    name1: ""   // for mapping doName1 in DO.
    nestedId: "", //for DT.nestObj.id
    nestedName: "", //for DT.nestObj.name
}

对于 Dozer 或 Orika,它们都可以自动匹配 DO 和 DTO 之间的 id 和 name 属性,而无需任何配置或 java 代码,因为它们具有相同的属性名称和类型。但是如果你想 DO.doName1<---->DTO.name1DO.nestedObj.id<--->DTO.nestedId您需要进行一些配置(通过 xml 或 java)来告诉映射工具您打算这样做。我认为对于您的用例,Dozer、Orika 和 ModelMapper 都可以。但对我来说,出于性能目的,我将我的项目从推土机切换到 Orika。虽然 Orika 没有推土机那么成熟,但没有那么智能,需要我做很多额外的工作来维护我的自定义映射配置。如果您的项目不太关心性能,我会推荐您推土机,它非常易于使用并支持许多高级功能。否则,如果您要购买高性能,我建议您使用 orika。

于 2012-08-16T02:39:17.957 回答