Dto - 实体映射最佳实践

Dto - Entity mapping best practice

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

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

一种方法是创建通用映射器抽象 class 并提供特定 dto 的实现。尽管如此,我对这种方法持怀疑态度,因为我可能有很多 dto,即许多 postDto,这会导致许多映射器 classes.

有更好的方法吗?

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

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

    }

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