메인 프로젝트 도중 mapper 대신 converter를 이용해보라는 조언을 얻게 되어 converter를 도입해보기로 하였다.
먼저 converter 인터페이스를 만들었다.
public interface Converter<Entity, DTO> {
DTO toDTO(Entity entity);
Entity toEntity(DTO dto);
List<DTO> toListDTO(List<Entity> entityList);
}
이후 converter가 필요한 도메인에 implements 하였다.
@Component
public class PostsImgConverter implements Converter<PostsImg,ImgDto> {
...
@Override
public ImgDto toDTO(PostsImg postsImg) {
return ImgDto.builder()
.id(postsImg.getId())
.url(postsImg.getImgUrl())
.fileName(postsImg.getFileName())
.build();
}
@Override
public PostsImg toEntity(ImgDto imgDto) {
return null;
}
@Override
public List<ImgDto> toListDTO(List<PostsImg> postsImgList) {
return postsImgList.stream().map(this::toDTO).collect(Collectors.toList());
}
}