인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

bk님의 프로필 이미지
bk

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

DTO 변환 시 우아한형제들은 어떻게 처리하시나요?

해결된 질문

작성

·

6K

8

샘플에서 DTO는 생략하셔서 아쉽습니다.

DTO 변환으로 modelmapper나 mapstruct 정도 쓰는것같습니다.
물론 mapper 없이도 하시는것 같던데요.

우아한형제들은 mapper에 대한 고견이 어떠신지 매우 궁금합니다!~

답변 1

15

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. bk님

우아한형제들의 의견이라기 보다는 제가 실무에서 다양하게 경험한 개인적인 의견을 드리겠습니다^^

저도 주위 개발자 분들과 이것가지고 옥신각신? 하는데요. ㅎㅎ

결국 코드량을 줄여준다는 장점이 있지요.

그럼 제가 생각하는 단점을 쭉 늘어보겠습니다.

1. 모델이 단순하면 상관이 없는데, 매핑해야 하는 모델이 복잡하거나 서로 차이가 많이 나면... 머리속으로 생각을 좀 많이 해야 합니다. 이게 어느정도 복잡해지면 생각하시는 시간 때문에 비용이 더 들어가더라구요.

2. 직접 수동으로 할 때는 컴파일 시점에 오류를 잡을 수 있는데, 이건 실행을 해봐야 오류를 찾을 수 있습니다.

3. ModelMapper는 동시성 성능 이슈가 있습니다. 수천 TPS의 리엑티브 모델에서는 이 부분이 명확하게 병목으로 나왔습니다. 물론 수천 TPS가 안되는 상황에서는 상관이 없습니다. (MapStruct는 모르겠네요)

결국 장단점이 있는데요. 저는 사용을 안합니다. ㅎㅎ(사용하다가 사용을 안하게 되었으니, 언젠가는 바뀔지도 모르겠습니다.)

복잡한 실무에서 엔티티를 DTO로 변경하는게 이상적으로 딱딱 맞아 떨어지는 경우만 있는 것도 아니고, 수동으로 작업하면 결국 컴파일 시점에 오류를 잡을 수 있다는 장점도 있구요. 그리고 무엇보다! 수동으로 해도 손까락만 약간 힘들지 몇분 안걸립니다. ㅋㅋ

주위에 개발 잘하시는 분들 중에 정말 선호하는 분들도 있고, 정말 싫어 하는 분들도 있습니다. ㅎㅎ

그리고! 아쉬워하셨던 엔티티와 DTO 사용과 관련된 부분은 조만간 오픈하는 활용편2탄에서 깊이있게 다룰 예정입니다. 기대해주세요^^

감사합니다.

bk님의 프로필 이미지
bk

작성한 질문수

질문하기