JuBin's personal study blog

[JAVA] MapStruct 사용하기(Object Mapping Library) 본문

JAVA

[JAVA] MapStruct 사용하기(Object Mapping Library)

JuBin 2021. 3. 19. 16:24
반응형

ModelMapper, MapStruct 둘다 Object Mapping 라이브러리로 일반적으로 Entity -> DTO 혹은 DTO -> Entity 변환Object to Object의 매핑을 위해서 사용된다.

 

국내에서는 ModelMapper를 많이쓰고, 레퍼런스가 많아서, 사용하기 편하다고해서 많이들 쓰지만

ModelMapper와 MapStruct 둘의 퍼포먼스 차이는 약 90배이상 차이난다.

간단하게 설명하면 ModelMapperRuntime리플렉션으로 모델 매핑을해 성능상 좋지않고

Mapstruct컴파일 타임에 매핑 클래스를 생성해줘 그 구현체를 런타임에 사용하는 것이기 때문에 앱 사이즈는 조금 커질수 있지만 성능상 크게 이슈가 없다~

 

(성능비교는 이분 포스팅을 참고 better-dev.netlify.app/java/2020/10/26/compare_objectmapper/)

 

 

MapStruct 사용

 

  • source측과 target측의 클래스 선언에서 기본 생성자가 반드시 선언되어 있어야 한다.
  • Lombok과 같이 사용시 둘다 annotaionProcessor기반 라이브러리라 maven사용시 pom.xml에 따로 plugin 설정을 해줘야 한다. 예시는 아래와 같다
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.5.1</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<annotationProcessorPaths>
						<path>
							<groupId>org.mapstruct</groupId>
							<artifactId>mapstruct-processor</artifactId>
							<version>${org.mapstruct.version}</version>
						</path>
						<path>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
							<version>${org.lombok.version}</version>
						</path>
					</annotationProcessorPaths>
				</configuration>
			</plugin>

 

반응형

'JAVA' 카테고리의 다른 글

[JAVA] Checked Exception, UnChecked Exception  (0) 2021.04.12
[JAVA] JVM 메모리 구조 정리 - 2  (0) 2021.03.23
[JAVA] 직렬화(Serialize)란?  (0) 2021.03.14
Maven Wrapper란(mvnw)  (0) 2021.01.05
[Java] ObjectMapper란  (0) 2020.12.23