如何将不同的Java-Bean结构映射到另一个上

Han*_*örr 6 java mapping javabeans

在我们的项目中,我们必须将一个嵌套的bean结构映射到另一个.(这些实际上是JAXB映射的XML文档的Java表示,例如,表示传入的订单文档.)这必须映射到另一个系统的完全不同的订单文档结构.

有什么选择呢?我更喜欢满足以下要求的东西:

  1. 当没有定义一个字段的映射时,映射应该提醒我
  2. 映射应该有一些默认值,例如将相同名称的字段映射到另一个上,并为int提供标准映射,反之亦然.
  3. 映射应该是双向的.
  4. 在定义映射时,应该能够使用代码完成.

一个有前途的框架是Dozer,但它不能满足1和4.与JBeanMapper相同.用Java编程只需4个但不是其他要求; 使用XSLT可能实现2但没有别的.你有更好的想法吗?

Jon*_*han 5

ModelMapper是一个满足所有条件的库.它提供了一个映射API,它使用实际代码来映射属性 - 因此您可以获得代码完成.它提供验证以确保映射所有目标属性.此外,它提供了一些你甚至不知道你想要的东西,如智能映射:)

查看ModelMapper主页以获取更多信息:

http://modelmapper.org


Jee*_*Bee 1

当我们遇到这个问题时,我们最终在 Java 的实用程序类中进行字段映射。这确实很麻烦,尤其是当您必须映射到多个不同的 Web 服务并必须为每个服务编写映射时(其中一些是命名属性的简单 2D 映射,而不是对象的层次结构,哭了

然而,通过这种方式,您确实能够分析映射目标的要求,以获得最佳质量的映射,在未设置数据的情况下设置默认值,等等。您可以在映射器中需要的地方抛出自定义“UndefinedMappingException”。由于不是一个使用反射和/或复杂 XML 映射配置文件的蓬松库,它的速度快得惊人。

即,这是争论“用 Java 编写”的帖子。