작성
·
120
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
JPA활용2편과 JPA 데이터 강의를 보면 DTO를 직접 반환하는 부분에서 질문드립니다.
강의 수강이전에 repository에서 가져온 Entity를 직접조회하여 가져온 값을 service계층에서 lombok의 builder어노테이션을 이용하여 DTO형태로 직접조립하여 클라이언트에게 반환하는 API를 주로 구성했습니다. 근데 실무에서는 주로 위와 같은 방법이 아니라 repository계층에서 DTO를 직접 불러와서 조립하는 방식을 선호되나요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. tkv00님.
DTO를 반환하는 방법에 대해 질문해 주셨군요. 이는 실무와 강의에서 많은 개발자들이 고민하는 주제입니다.
일반적으로 실무에서는 성능 최적화와 유지보수성을 위해 Repository에서 DTO를 직접 조회하는 방식을 선호하는 경우가 많습니다. 이를 통해 필요 없는 엔티티의 모든 정보를 가져오는 부담을 줄일 수 있으며, 데이터 전송량을 줄여 성능을 높일 수 있습니다.
장점: 불필요한 엔티티 정보를 가져오지 않으므로 효율적입니다. 데이터베이스에서 필요한 필드만 선택하여 가져올 수 있으며, JPQL이나 쿼리 메서드를 활용하여 DTO를 직접 생성할 수 있습니다.
단점: 특정 비즈니스 로직이 복잡한 경우, 쿼리문이 복잡해지고 유지보수가 어려울 수 있습니다. 또한, 해당 쿼리가 여러 곳에서 재사용되는 경우, 사용의 자유도가 떨어질 수 있습니다.
Service 계층에서 Entity를 가져온 후 DTO로 조립하는 방식은 비즈니스 로직을 중앙화하여 관리하기 쉽고, 재사용성을 높일 수 있습니다. 이 방식은 여러번 호출되는 동일한 작업들에 대해 유연성을 제공합니다.
장점: 비즈니스 로직을 서비스 계층에서 통합하여 관리하는 것이 더 직관적이며, 로직의 변경이 필요한 경우 서비스 계층 내에서 조정할 수 있습니다.
단점: 엔티티를 먼저 조회한 후 DTO로 변환하는 과정을 거치므로 성능 면에서는 다소 비효율적일 수 있습니다.
결론적으로, 두 방법 모두 상황에 따라 사용할 수 있는 장단점이 있습니다. 프로젝트의 특성, 유지보수성, 그리고 성능의 요구 사항에 맞춰 적절한 방법을 선택하는 것이 중요합니다.
관련된 논의가 진행된 질문으로는 “DTO 사용방법”에서 다양한 개발자의 의견을 찾아볼 수 있습니다. 실무에서의 적용 방식과 장단점에 대해서도 유사한 논의가 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.