MapStruct 설정 (ModelMapper 대안)

2022. 4. 22. 17:57 JAVA/mapstruct, modelMapper

ModelMapper가 많이 사용하고 사용하기 편하나 성능 이슈가 있고, 아래 URL을 통해 확인할 수 있다.

https://www.baeldung.com/java-performance-mapping-frameworks

 

따라서, 성능 이슈에 대응하기 위해 ModelMapper 대신 MapStruct를 대신 사용한다.

 

MapStruct 설정

build.gradle 파일에 아래 의존성 추가

implementation 'org.mapstruct:mapstruct:1.3.1.Final'
annotationProcessor "org.mapstruct:mapstruct-processor:1.3.1.Final"

 

Mapper interface 클래스 생성

  • 아래 interface 생성시 프로젝트 빌드하는 경우 클래스명 + Impl 파일이 생성된다
  • Mapping 어노테이션을 통해 entity의 값 model 매핑 설정이 가능하다.
  • Model to Entity 설정도 가능
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;

@Mapper
public interface NewsBoxContentsMapper {
   NewsBoxContentsMapper INSTANCE = Mappers.getMapper(NewsBoxContentsMapper.class);

   @Mapping(target = "video1", expression = "java(entity.getIsVideo1().equals(0) ? false : true)")
   @Mapping(target = "video2", expression = "java(entity.getIsVideo2().equals(0) ? false : true)")
   @Mapping(target = "video3", expression = "java(entity.getIsVideo3().equals(0) ? false : true)")
   @Mapping(target = "video4", expression = "java(entity.getIsVideo4().equals(0) ? false : true)")
   @Mapping(target = "video5", expression = "java(entity.getIsVideo5().equals(0) ? false : true)")
   @Mapping(target = "video6", expression = "java(entity.getIsVideo6().equals(0) ? false : true)")
   @Mapping(target = "video7", expression = "java(entity.getIsVideo7().equals(0) ? false : true)")
   @Mapping(target = "video8", expression = "java(entity.getIsVideo8().equals(0) ? false : true)")
   @Mapping(target = "ad3", expression = "java(entity.getIsAd3().equals(0) ? false : true)")
   @Mapping(target = "ad4", expression = "java(entity.getIsAd4().equals(0) ? false : true)")
   NewsBoxContents entityToDto(NewsBoxManageEntity entity);
}

 

실제 사용

NewsBoxContentsMapper.INSTANCE.entityToDto(newsBoxManageTopEntity);



출처: https://lovon.tistory.com/142 [Java 개발 블로그]

'JAVA > mapstruct, modelMapper' 카테고리의 다른 글

자바 코드 매핑 vs MapStruct vs ModelMapper  (0) 2022.04.22
MapStruct - NullPointerException  (0) 2021.09.15