Dto - 实体映射最佳实践

时间:2021-04-30 20:31:12

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

    }

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