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

저스트님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

회원 등록 API

엔티티를 외부에 노출하면 안 된다는 의미

작성

·

96

0

안녕하세요.

엔티티를 파라미터로 받으면 안 되는 이유에 대해서는 말씀해주셔서 이해하였습니다.

  • 엔티티에 화면 검증 로직이 들어가는 문제

  • 엔티티를 변경하면 API 스펙이 변경되는 문제

그리고 엔티티를 외부에 노출하면 안 된다고 말씀하셨습니다.

엔티티에서 필요한 변수만 사용하거나, 추가 변수를 사용하고자 해서 DTO로 반환하는 걸로 추측했습니다.

 

그런데 뭔가 더 구체적이고 다양한 이유가 있을 것 같아 직접 설명을 듣고 싶어 질문 드립니다.

감사합니다.

답변 1

0

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

엔티티를 외부에 노출하는 것에 대한 우려와 이러한 실천을 피해야 하는 이유에 대해 궁금해 하시는 점 이해했습니다. 엔티티를 직접 외부에 노출하는 행위는 다양한 문제를 야기할 수 있으며, 실제로 김영한 강사님의 강의에서도 이를 자세히 다루고 있습니다.

엔티티를 외부에 직접 노출할 경우 발생할 수 있는 몇 가지 문제는 다음과 같습니다:

  1. API 스펙의 변경: 엔티티의 구조가 변경될 때마다 API 응답 스펙이 변경되어, API를 사용하는 클라이언트 측에서 많은 수정이 필요할 수 있습니다.
  2. 보안 문제: 엔티티에 비밀번호와 같은 민감한 정보가 포함될 경우, 이를 그대로 노출하는 것은 분명한 보안 문제를 일으킬 수 있습니다.
  3. 유지보수의 어려움: 엔티티의 어떤 필드를 API에 노출할지 선택하는 것이 점점 어려워질 수 있으며, 엔티티의 변경이 자유롭지 못하게 됩니다.

예시 답변 링크

  • 강의중에 실무에 대한 궁금중이 있어서 질문합니다.에서는 DTO 생성자에 엔티티를 직접 사용하는 것에 대한 김영한 강사님의 답변을 확인할 수 있습니다. 이 답변은 엔티티를 외부에 직접 노출하는 것과 관련된 질문에 직접적으로 답변하지는 않지만, 엔티티와 DTO에 대한 사용 방법과 원칙에 대해 설명해주고 있습니다.

  • JPA Entity Getter 문제 질문드립니다. 이 주제는 질문하신 내용과는 다소 다르지만, 엔티티의 속성을 어떻게 안전하게 노출할 수 있는지에 대한 고민을 담고 있습니다. 엔티티와 외부 인터페이스 간의 상호작용에 대한 실질적인 고민 사례를 보여 줍니다.

엔티티의 직접 노출을 피하고 DTO를 사용하는 방법은, API의 안정성, 보안, 유지보수의 용이함을 도모하기 위한 핵심적인 전략 중 하나입니다. 질문하신 내용의 핵심적인 부분을 해결하는 데 도움이 될 수 있는 마땅한 답변을 찾기 어렵다는 점 양해 부탁드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.