---
category: Architecture
tags: [auto-wikified, technical-documentation, architecture]
title: Mapper / ModelMapper
description: "ModelMapper는 DTO(Data Transfer Object), 도메인 모델, 엔티티 등 서로 다른 객체 간의 데이터를 매핑(변환)하기 위해 사용되는 라이브러리이다 [1]."
last_updated: 2026-05-04
---

# Mapper / ModelMapper

## 📌 Brief Summary
ModelMapper는 DTO(Data Transfer Object), 도메인 모델, 엔티티 등 서로 다른 객체 간의 데이터를 매핑(변환)하기 위해 사용되는 라이브러리이다 [1]. 주로 헥사고날 아키텍처나 계층형 아키텍처가 적용된 프레임워크(예: Spring Boot)에서 각 계층을 넘나드는 데이터를 변환하여 계층 간 결합도를 낮추는 데 활용된다 [1, 2].

## 📖 Core Content
* **계층 간 데이터 변환 책임 분리**: 헥사고날 아키텍처(Ports and Adapters)의 실전 구현에서 매핑 작업은 각 어댑터의 핵심 역할 중 하나이다. 예를 들어, 웹 어댑터(Web Adapter)는 들어오는 API 모델(DTO)과 내부 도메인 모델 간의 데이터를 매핑하고, 리포지토리 어댑터(Repository Adapter)는 도메인 모델과 데이터베이스 엔티티 간의 데이터를 매핑하여 변환을 처리한다 [2, 3].
* **외부 API 스펙 파괴 방지 (안전장치)**: DTO와 엔티티를 명확히 분리하고 매퍼(Mapper)를 통해 데이터를 변환하는 과정은 아키텍처적으로 중요한 안전장치 역할을 한다 [4]. 이를 통해 내부 데이터베이스 모델(엔티티)의 구조가 변경되더라도, 매핑 레이어에 의해 외부로 노출되는 API 스펙(DTO)이 파괴되지 않도록 보호할 수 있다 [4].
* **객체 간 매핑 단순화**: ModelMapper와 같은 라이브러리는 위와 같이 분리된 DTO, 도메인, 엔티티 모델 간의 데이터 매핑 및 복사 과정을 단순화하여 개발자가 비즈니스 로직에 집중할 수 있도록 지원한다 [1].

## ⚖️ Trade-offs & Caveats
* **보일러플레이트 및 개발 공수 증가**: 모델과 API 스펙을 분리하기 위해 각 요청(Request)의 변형마다 별도의 DTO를 생성하고, 이를 도메인 객체나 엔티티로 매핑하는 구조를 유지하는 것은 개발자에게 상당한 추가 작업(effort)을 요구하며 코드량을 증가시킨다 [5].
* ModelMapper 라이브러리 작동 방식 자체에 따른 성능적 부작용이나 세부적인 최적화 제약 사항 등에 대해서는 소스에 관련 정보가 부족합니다.

---
*Last updated: 2026-05-03*