推土机替代bean映射?

时间:2009-11-25 23:47:00

标签: guice dto dozer dto-mapping

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

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

3 个答案:

答案 0 :(得分:16)

请看Orika

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

答案 1 :(得分:10)

我也在寻找替代品。

Here是对不同选项的非常好的报道。

答案 2 :(得分:3)

从我的角度来看,总是需要用于映射一些特殊属性的配置或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。