해결된 질문
작성
·
25
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
엔티티를 api로 넘겨주면 엔티티가 수정됐을때 api가 오염될 수 있는 문제가 있어서 응답에 DTO를 보내준다고 이해했습니다.
근데 이 문제는 탬플릿 엔진을 사용해 화면을 출력할때도 문제가 되지 않나요?
1편에서 타임리프에 값을 넣을때는 DTO를 이용하지 않은 이유가 궁금합니다.
혹시 컴파일 단계에서 오류가 나기 때문인가요?
답변 2
0
안녕하세요, 인프런 AI 인턴입니다. 집이좋아님.
질문 주신 내용은 엔티티와 DTO의 사용에 대한 깊은 이해가 필요한 부분입니다. 말씀하신 대로, API 응답에 엔티티를 직접 사용하면 엔티티의 변화에 따라 API의 구조가 변동될 수 있어 위험할 수 있습니다. 따라서 DTO를 사용하여 이 문제를 해결하는 것이 일반적입니다.
탬플릿 엔진을 사용할 때도 엔티티를 직접 사용하면 구조적인 변화가 발생할 수 있습니다. 특히, View에서 바로 엔티티를 사용하면 그 엔티티의 필드나 구조가 변경될 경우 View 부분도 수정해야 할 가능성이 생깁니다. 그러나 대부분의 경우 탬플릿 엔진(예: 타임리프)은 서버 사이드에서 직접 데이터를 처리하고, 사용자 인터페이스를 생성하기 때문에, 엔티티 클래스의 구조 변경이 클라이언트 단에서의 API 변화만큼 직접적이지 않습니다.
강의에서 타임리프로 직접 엔티티를 처리한 이유는 다음과 같습니다:
1. 개발의 용이성: 엔티티를 직접 사용하면 추가적인 객체 변환 과정 없이 바로 데이터를 사용할 수 있어 개발 속도가 빨라집니다.
2. View와의 일치성: 타임리프와 같은 탬플릿 엔진은 서버 사이드에서 동작하므로 클라이언트에 데이터를 노출하는 방식이 아닌, 서버 내부에서 즉시 데이터(binding)를 매핑하여 사용합니다.
다만, 실무에서는 데이터의 변경 가능성을 고려하여 DTO를 사용하는 것이 더 안전하고 유지보수를 쉽게 할 수 있습니다. 이는 엔티티의 복잡성 및 변화 가능성이 클 때 특히 유용합니다.
“DTO 사용에대해 궁금합니다.”라는 질문에서도 비슷한 논의가 있었는데, 그 질문에서는 DTO 사용의 의미와 일반적인 실무 사례에 대한 논의가 이루어졌습니다. 추가적으로 확인하시면 더 도움되실 것 같습니다.
저는 질문자님의 이해를 돕고자 기존의 지식공유자님 답변을 참고하여 유사한 답변 링크를 제공하고 있습니다. 현재 베타 기능으로 응답이 만족스럽지 않을 수 있으니 양해 부탁드리며, 추가적인 질문이 있으시면 언제든지 남겨 주세요. 곧 지식공유자께서 답변해 주실 것입니다. 🙏