inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

ModelMapper에 대해 질문드립니다 !!

221

김지호

작성한 질문수 6

0

안녕하세요!
엔티티 -> DTO, DTO -> 엔티티 변환 모두 STRICT 전략을 사용하는 modelMapper.map을 사용하고있습니다.

DTO를 쓰는 이유 -> 엔티티가 바뀌어도, dto는 그대로이므로 api 스펙이 바뀌지않음.

그런데 STRICT 전략을 쓰는 modelMapper를 사용하면,

dto와 엔티티 필드이름이 정확하게 일치해야하므로

엔티티가 바뀌면 dto 필드도 바뀌어야함. 이렇게 되면 엔티티 변경 시에 api 스펙이 바뀌지않는다는 장점이 없어지게됨

이런 생각이 들었는데, 그럼 STRICT 전략은 지양해야하나요, 아님 다른 방법이 있는 것인가요?

spring modelmapper java 스프링

답변 2

0

rafaelakutch58

Addicted to Incredibox? Sprunki Game is the perfect fix! Play now and start making awesome music!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

김지호님, ModelMapper의 STRICT 전략을 사용하는 경우 필드 이름이 정확히 일치해야 하므로 엔티티가 변경되면 DTO도 변경되어야 하는 상황이 발생할 수 있습니다. 이러한 특성을 고려할 때 몇 가지 대안을 제안드릴 수 있습니다.

  1. Custom Mappings 사용: STRICT 모드 대신, custom mappings을 설정하여 필드 이름이 일치하지 않더라도 변환이 가능하도록 설정할 수 있습니다. 이를 통해 엔티티와 DTO의 변경에 유연하게 대응할 수 있습니다.

  2. Loose Matching 사용: ModelMapper의 Loose Matching을 사용하여 필드 이름이 완전히 일치하지 않더라도 변환이 가능하도록 하는 방법이 있습니다. 이 경우, 정확한 일치보다는 유사한 이름을 찾는 방식으로 매핑을 수행합니다.

  3. Mapper 라이브러리 변경 고려: 보다 유연한 매핑이 필요하다면 다른 매핑 라이브러리(Mapping frameworks), 예를 들어 MapStruct를 사용하는 것도 고려할 수 있습니다. MapStruct는 컴파일 타임에 유형 안전하고 성능이 뛰어난 매핑 코드를 생성합니다.

  4. DTO 레이어 추상화: 가능하다면 DTO를 엔티티로부터 더 독립적인 상태로 유지하여 엔티티의 변경이 DTO에 영향을 주지 않도록 디자인합니다. 예를 들어, Service 계층에서 필요에 따라 변환 로직을 추가하여 관리할 수 있습니다.

이 방법들을 검토해보시고, 상황에 맞는 최적의 전략을 선택하시기 바랍니다. 필요에 따라 modelMapper의 기능을 확장하거나 다른 스택을 고려하는 것도 좋은 방법입니다. 추가적인 학습을 위해 Spring Data JPA - Reference Documentation도 참조해 보시면 도움이 될 수 있습니다.

build 시 에러 해결방법 공유(docker.desktop 업데이트 -> 의존성 버전 수정)

0

14

1

예외처리 3강 문의

0

17

1

챌린지 시작일 문의

0

23

0

26년2회 실기기출은 언제쯤...

0

34

2

진짜화면이랑달라서못해먹겟어요먹겟어요

0

49

1

네이버 API | '검색 - 책' API 제공 중단

0

33

2

ArticleReadService 관련 질문

0

26

1

kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.

1

62

1

이론 공부법 요약본 버전 업데이트 문의

0

35

2

domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다

1

45

1

해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.

0

23

1

Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.

0

44

2

장치 의존성과 CSR

0

35

1

테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.

0

29

1

[영한님]Spring Boot 및 프로젝트 생성

0

52

2

Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면

1

72

1

리뉴얼 시기

0

44

2

스크립트에 대해 질문 있습니다.

1

58

1

같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!

2

71

1

조건 검색 질문

0

39

1

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

54

3

강의 요청 문의

0

39

2

클로드코드 명령어-대화&세션관리 수업 자료

0

40

1

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

56

2