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

maurizio님의 프로필 이미지
maurizio

작성한 질문수

실전! Querydsl

프로젝션과 결과 반환 - @QueryProjection

데이터 조회에 대해서 질문드립니다.

작성

·

231

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)

3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]

entity로 반환 후에 DTO에 맵핑하는 방식이 쯤 더 효과적인지

아니면 DTO프로젝션으로 진행하는게 효과적인지가 궁금합니다.

아니면 상황에 따라서 적절하게 쓰는게 좋다면 어떠한 상황인지 궁금합니다.

답변 1

1

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

안녕하세요. maurizio님

둘은 확실한 트레이드 오프가 있습니다. 따라서 상황에 맞추어 기능을 사용해야 합니다.

엔티티로 조회후 DTO로 변환

장점: 엔티티로 조회하게 되면 해당 리포지토리 코드의 재사용 가능성이 높습니다. 엔티티라는 것이 애플리케이션 전반에서 사용되기 때문이지요.

단점: 엔티티로 조회하면 DTO 변환에 필요하지 않은 데이터까지 다 조회하기 때문에 성능과 메모리 용량을 더 사용하게 됩니다. 추가로 DB -> 애플리케이션의 네트워크 사용량도 증가합니다.

DTO로 조회

장점: 최적화된 데이터를 한번에 조회하기 때문에 성능, 메모리 사용량, 네트워크 관점에서 좋습니다.

단점: 해당 DTO를 조회하는 리포지토리 기능은 특정 기능에 종속될 가능성이 높습니다. DTO라는 것이 보통 특정한 목적으로 사용되고, 데이터도 거기게 맞추어 최적화 되어 있기 때문에 범용으로 사용하기 어렵습니다.

감사합니다.

maurizio님의 프로필 이미지
maurizio
질문자

감사합니다 답변 내용과 직접 사용해보니 장단점을 확실히 느끼게 되었습니다.

maurizio님의 프로필 이미지
maurizio

작성한 질문수

질문하기