我试图想出一种简单的方法来将DTO映射到没有样板代码的实体。虽然我在考虑使用dozer,但似乎需要大量的xml配置。有没有人看过使用DSL在纯Java中配置bean映射的推土机替代方案?
理想情况下,我希望找到一个受Guice工作方式启发的bean映射器。
答案 0 :(得分:16)
请看Orika。
Orika是一个Java Bean映射框架,可以将数据从一个对象递归复制(以及其他功能)。在开发多层应用程序时它非常有用。
答案 1 :(得分:10)
我也在寻找替代品。
Here是对不同选项的非常好的报道。
答案 2 :(得分:3)
从我的角度来看,总是需要用于映射一些特殊属性的配置或java代码。
我希望以DO
和DTO
为例
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.name1
或DO.nestedObj.id
< ---> DTO.nestedId
您需要进行一些配置(通过xml或java)来告诉您打算这样做的映射工具。
我认为对于您的用例,Dozer,Orika和ModelMapper都可以。但对我而言,我正在将我的项目从推土机转移到Orika以达到性能目的。虽然Orika不像推土机那么成熟,但不是那么智能,并且要求我做很多额外的工作来维护我的自定义映射配置。
如果您的项目不太关心性能,我会推荐您推土机,它易于使用并支持如此多的高级功能。否则,如果你购买高性能,我建议你orika。