DTO 매핑

Stupefyee's avatar
Dec 06, 2024
DTO 매핑

1. DTO란?

  • 정의: Data Transfer Object의 약자로, 계층 간 데이터 전송을 위한 객체.
  • 역할: 엔터티(Entity)와 분리된 객체로, 전송에 필요한 데이터만 담음.
  • 사용 이유:
    • 데이터 전송 최적화.
    • 엔터티 보호.
    • 응답 형식 제어.

2. DTO 매핑의 필요성

  • 엔터티와의 차별화
    • 엔터티는 데이터베이스와 직접 연결되므로, 외부 노출 시 보안 및 유지보수 문제가 발생할 수 있음.
    • DTO는 전송에 필요한 최소한의 정보만 포함.
  • 비즈니스 로직 분리
    • DTO는 데이터 표현에만 집중, 비즈니스 로직과 무관.

3. 매핑 방식

  1. 수동 매핑
      • 코드로 직접 매핑 수행.
      • 장점: 세밀한 제어 가능.
      • 단점: 반복 코드 증가.
      예제 (Java):
      public class UserMapper { public static UserDTO toDTO(User user) { UserDTO dto = new UserDTO(); dto.setId(user.getId()); dto.setName(user.getName()); dto.setEmail(user.getEmail()); return dto; } }
  1. 자동 매핑
      • 매핑 라이브러리 활용(예: MapStruct, ModelMapper).
      • 장점: 코드 간결화, 생산성 향상.
      • 단점: 라이브러리 의존성, 복잡한 매핑 제어 한계.
      예제 (MapStruct 사용):
      @Mapper public interface UserMapper { UserMapper INSTANCE = Mappers.getMapper(UserMapper.class); UserDTO toDTO(User user); }

4. DTO 매핑 시 고려 사항

  1. 성능
      • 대규모 매핑 시 자동 매핑보다 수동 매핑이 더 효율적일 수 있음.
  1. 보안
      • 민감한 데이터가 DTO에 포함되지 않도록 주의.
  1. 유지보수성
      • DTO와 엔터티 변경 사항이 동기화되도록 관리.

5. 활용 사례

  • API 응답 데이터
    • 필요한 필드만 포함해 클라이언트에 응답.
  • 계층 간 데이터 전달
    • 서비스 계층에서 컨트롤러로 데이터 전달 시 사용.
  • 비즈니스 요구사항 반영
    • 특정 뷰나 화면에 맞춘 데이터 구조 제공.
Share article

stupefyee