【问题标题】:Selma v/s MapStruct v/s Model Mapper which one to chose as java mapping framework.?Selma v/s MapStruct v/s Model Mapper 选择哪一个作为java映射框架。?
【发布时间】:2022-01-28 16:56:35
【问题描述】:

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

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

【问题讨论】:

标签: mapping


【解决方案1】:

鉴于 Java 8 Stream API 和 lombok 注释处理器库,我不再使用此映射框架。我通过实现spring框架的Converter接口(@98​​7654323@)来创建自己的映射器

    @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;
    }

【讨论】:

  • 您是否曾经运行过基准测试来比较它?你能详细说明你为什么改变吗?
【解决方案2】:

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

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

【讨论】:

  • 我遇到了同样的问题,基准链接对决策有很大帮助。
  • 鉴于 Java 8 Stream API,我不再使用这个映射框架。我通过实现spring框架的Converter接口来创建自己的映射器(package org.springframework.core.convert.converter.Converter
  • 作为其中一些结果的简单证明:很明显,编译时映射类生成(如MapStruct)比使用反射的运行时映射器(如ModelMapper)快得多。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2016-04-19
    • 2012-10-24
    • 2015-09-13
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2015-02-22
    • 2012-03-05
    • 2012-11-03
    相关资源
    最近更新 更多