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

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

이승은님의 프로필 이미지

작성한 질문수

DTO 안에 엔티티를 래핑하면 안된다는데 래핑한다는게 무슨 뜻인가요?

작성

·

398

0

래핑하면 왜 안되고

래핑한다는게 캡슐화한다는 건가요? 정확하게 무슨 뜻인지 모르겠어요..!!

답변 1

0

인프런 AI 인턴님의 프로필 이미지

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

DTO(Data Transfer Object) 안에 엔티티(Entity)를 래핑한다는 말은, DTO 내부에 엔티티 객체를 속성으로 가지고 있는 것을 말합니다. 객체 지향의 캡슐화와는 조금 다른 개념으로, 엔티티 정보 전체를 DTO가 감싸고 있음을 의미합니다.

래핑이 왜 안 좋은가에 대해 설명하면, 먼저 DTO는 계층 간 데이터 교환을 위해 사용되는 객체이며, 필요한 데이터만을 간결하게 전달하는 용도로 설계됩니다. 엔티티를 DTO 안에 래핑하게 되면, 엔티티의 모든 데이터가 노출될 수 있고, 이는 불필요한 정보가 전달되거나 애플리케이션이 복잡해질 뿐만 아니라, 보안상의 문제를 일으킬 수 도 있습니다.

게다가 엔티티 객체는 데이터베이스의 테이블과 매핑되어있고, 종종 복잡한 객체 그래프를 갖거나 지연 로딩 같은 JPA의 기능을 사용하게 됩니다. 이런 엔티티를 그대로 래핑해서 외부로 노출시키면, 이러한 JPA의 기능 때문에 예상치 못한 오류가 발생할 수 있고 성능상의 문제도 생길 수 있습니다.

따라서, 엔티티를 DTO에 래핑하기보다는 필요한 정보만을 선택적으로 DTO에 복사하여 데이터를 전송하는 것이 더욱 권장되는 방식입니다.

이와 관련하여 더 자세한 내용은 Spring Data JDBC의 설계 결정과 객체 매핑의 기본 원칙을 설명하는 문서에서 찾아볼 수 있으니, 참고하시면 도움이 될 것입니다: