Selma v/s MapStruct v/s Model Mapper 选择哪一个作为java映射框架。?

use*_*osh 6 mapping

嗨,我正在尝试在我的项目中使用映射框架,但我无法决定选择哪一个,其中有映射框架。Selma v/s MapStruct v/s Model Mapper 映射框架?

请帮助我选择最好的功能和面向性能的框架。

all*_*tej 8

鉴于 Java 8 Stream API 和lombok注释处理器库,我不再使用此映射框架。我通过实现Converterspring 框架的接口创建了自己的映射器( package org.springframework.core.convert.converter.Converter)

    @Component
    public class ProductToProductDTO implements Converter<Product, ProductDTO> {
        @Override public ProductDTO convert( Product source ) {
            ProductDTO to = ProductDTO.builder()
                    .name( source.getName())
                    .description( source.getDescription() )
                    .tags(source.getTags().stream().map(t -> t.getTag().getLabel()).collect( Collectors.toList()))
                            .build();
            return to;
        }
    }

    @Builder //lombok annotation to create Builder class
    @Data //lombok annotation to create getters & setters
    @AllArgsConstructor //required for @Builder
    public class ProductDTO  {
        private String name;
        private String description;
        private List<String> tags;
    }
Run Code Online (Sandbox Code Playgroud)

  • 您是否曾经运行过基准测试来比较它?你能详细说明你为什么改变吗? (7认同)

All*_*anh 8

单击此处,您可以找到最常用的框架之间的完整比较以进行映射。在此链接中,您可以找到基准比较、如何使用每个框架等。我决定使用 MapStruct,因为它易于使用且速度非常快。


all*_*tej 6

之前我在寻找利用注释处理器的解决方案时也遇到过类似的情况。我会选择 Selma 或 MapStruct。有点类似于代码生成器。两者都玩过,但使用 MapStruct。SO中的类似问题可以帮助您 - Java mapping: Selma vs MapStruct

github 中的一个项目对对象映射器框架进行了基准测试,顶部有 Selma 和 MapStruct - https://github.com/arey/java-object-mapper-benchmark