我试图找出一种简单的方法来将 DTO 映射到没有样板代码的实体。当我考虑使用推土机时,它似乎需要大量的 xml 配置。有没有人见过使用 DSL 在纯 Java 中配置 bean 映射的推土机替代方案?
理想情况下,我希望找到一个受 Guice 做事方式启发的 bean 映射器。
我试图找出一种简单的方法来将 DTO 映射到没有样板代码的实体。当我考虑使用推土机时,它似乎需要大量的 xml 配置。有没有人见过使用 DSL 在纯 Java 中配置 bean 映射的推土机替代方案?
理想情况下,我希望找到一个受 Guice 做事方式启发的 bean 映射器。
看看奥里卡。
Orika 是一个 Java Bean 映射框架,它可以递归地将数据从一个对象复制到另一个对象。它在开发多层应用程序时非常有用。
我也在寻找替代品。
这是对不同选项的很好的介绍。
从我的角度来看,总是需要映射一些特殊属性的配置或 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。