【问题标题】:Dto - Entity mapping best practiceDto - 实体映射最佳实践
【发布时间】:2021-07-24 03:55:38
【问题描述】:

我最近读了一些关于 DTO 模式的文章。我理解它的目的;隔离内部结构并为客户创建合同。但是,我一直在思考如何有效地将它们映射到实体。

所以,假设我有 2 个 Dto; CreatePostDto 和 ReadPostDto 可能在多个字段中有所不同。现在,我想将它们映射到 PostEntity,这可以使用 modelmapper、mapstruct 等技术完成。但是,将它们映射到服务层对我来说似乎不是很有吸引力,因为代码往往会变得混乱。

一种方法是创建一个通用映射器抽象类并为特定 dto 提供实现。不过,我对这种方法持怀疑态度,因为我可能有许多 dto,即许多 postDto,这会导致许多映射器类。

有没有更好的方法来做到这一点?

【问题讨论】:

  • 您提到了 mapstruct,为什么不使用它为您生成样板代码?它具有 Spring 支持,因此您可以将映射器注入您的服务层?
  • 你需要 dto 因为更少的时间连接数据库并且不忙数据库池

标签: java spring spring-boot jakarta-ee dto


【解决方案1】:

正如您提到的,如果您使用 Mapstruct,您可以为每个实体构建一个映射器类。 Mapstruct 将为您实现样板代码,您可以将所有相关映射分组。例如:

    public interface PostMapper {
    
        public PostEntity createPostDtoToPostEntity(CreatePostDto dto);
        
        public PostEntity readPostDtoToPostEntity(ReadPostDto dto);

    }

即使您的 Post DTO 不断增长,您仍然可以将它们分组到此映射器类中。

【讨论】:

    猜你喜欢
    • 2010-11-26
    • 2021-10-28
    • 2018-09-13
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2022-08-02
    • 2020-04-19
    相关资源
    最近更新 更多