[MapStruct] 01. MapStruct란 무엇인가?

2025. 4. 7. 20:24·공부/Java

map struct

도입 배경

🧱 레이어드 아키텍쳐와 DTO 변환의 반복

Spring Boot로 백엔드 개발을 하다 보면 자연스럽게 Layered Architecture를 따르게 됩니다.

보통은 MVC 패턴에 따라 Controller → Service → Repository 구조로 구성되며, 각 계층 간 데이터 전달을 위해 **DTO(Data Transfer Object)**를 사용합니다.

문제는, 계층을 넘나들 때마다 객체를 DTO로 변환하는 작업이 반복된다는 점입니다. 이 작업은 지루하고, 실수하기 쉬운(Human Error) 영역입니다. 필드가 많아질수록, 구조가 복잡해질수록 실수 확률은 더욱 높아집니다.

더 나아가 퍼사드(Facade) 패턴을 도입하여 Controller ↔ Service 사이에 추가적인 유스케이스 계층을 두는 경우, DTO는 더욱 다양한 계층을 거치게 되며, 계층 간 변환 작업이 급증하게 됩니다.

즉, 객체 매핑은 개발자가 반복해서 작성하는 코드의 양을 증가시키고, 코드의 품질을 떨어뜨릴 위험을 내포하고 있습니다.

 

✅ 객체 변환 자동화를 위한 해결책

자바에서는 계층 간 객체 변환을 자동화해주는 다양한 라이브러리가 존재합니다. 대표적으로 ModelMapper, MapStruct, JMapper, Selma 등이 있으며, 그 중에서도 ModelMapper와 MapStruct가 가장 널리 사용됩니다.

ModelMapper는 런타임 에 리플렉션을 사용해 매핑을 수행합니다.

설정이 간단하고 필드명이 같으면 자동으로 매핑되기 때문에 빠르게 사용할 수 있지만,

  • 성능이 떨어지고
  • 타입 안정성이 낮으며
  • IDE 자동완성이나 추적이 어렵다는 단점이 있습니다.

반면 MapStruct는 컴파일 타임에 매핑 코드를 직접 생성합니다.

  • 성능이 뛰어나고,
  • 컴파일 시점에 오류를 잡을 수 있어 안전하며,
  • IDE에서 구현체 추적과 디버깅이 쉬운 점이 큰 장점입니다.

즉, 성능과 유지보수성을 모두 고려했을 때 MapStruct가 가장 효율적인 선택이라고 판단하여 MapStruct를 사용하게 되었습니다. 이제 실제 사용법에 대해 살펴보겠습니다.

 

출처 : https://mapstruct.org/

저작자표시 비영리 변경금지 (새창열림)

'공부 > Java' 카테고리의 다른 글

[MapStruct] 03. 심화 사용법  (0) 2025.04.07
[MapStruct] 02. 기본 사용법  (0) 2025.04.07
[프랙티컬 모던 자바] 02. 인터페이스  (4) 2024.11.12
'공부/Java' 카테고리의 다른 글
  • [MapStruct] 03. 심화 사용법
  • [MapStruct] 02. 기본 사용법
  • [프랙티컬 모던 자바] 02. 인터페이스
뚝딱뚝딱2
뚝딱뚝딱2
  • 뚝딱뚝딱2
    개발도상국
    뚝딱뚝딱2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 공부
        • Java
        • Spring Boot
        • LORA
      • Web
        • 인스타 클론 코딩
        • GPT 응답 API 서버
        • Spring Boot 예외 처리
        • 코테 준비용 서비스 만들기
      • DevOps
        • 쿠버네티스
        • 서버 만들기
      • 코딩테스트
        • 알고리즘
      • 교육
        • 스파르타코딩클럽 - 내일배움단
        • 혼자 공부하는 컴퓨터 구조 운영체제
      • 잡다한것
  • 블로그 메뉴

    • 홈
  • 링크

    • GITHUB
  • 공지사항

  • 인기 글

  • 태그

    OpenAI API
    스프링 부트
    오블완
    mapstruct
    chat GPT
    spring boot
    티스토리챌린지
    예외
    REST API
    Entity
    클러스터
    클론코딩
    쿠버네티스
    백준
    Java
    인스타그램
    react
    MSA
    리액트
    스프링부트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
뚝딱뚝딱2
[MapStruct] 01. MapStruct란 무엇인가?
상단으로

티스토리툴바