자바풀스택 과정/챗지피티 선생님 in 자바풀스택

챗지피티에게 물어본 Entity를 Dto로 바꿔서 사용해줘야 하는 이유

파티피플지선 2025. 3. 4. 13:19
엔티티를 dto로 바꿔서 사용해줘야 하는 이유는 웹브라우저가 엔티티 테이블에서 데이터를 바로 읽어들일 수 없기 때문인거지?

ChatGPT의 말:

네, 맞습니다. 엔티티를 DTO(Data Transfer Object)로 변환해서 사용하는 이유는 여러 가지가 있지만, 그 중 하나는 웹 애플리케이션에서 직접 엔티티를 클라이언트에 전달하는 것이 여러 가지 문제를 일으킬 수 있기 때문입니다.

  1. 보안 문제: 엔티티는 데이터베이스와 밀접하게 연결되어 있기 때문에 민감한 데이터나 불필요한 정보를 포함할 수 있습니다. 예를 들어, 비밀번호나 내부 구현 세부사항 등이 포함될 수 있습니다. 클라이언트에 직접 엔티티를 전달하면 이러한 정보들이 노출될 수 있습니다.
  2. 유연성: 엔티티는 데이터베이스와 일치하는 구조로 설계되지만, 클라이언트에 전달할 데이터는 반드시 모든 필드를 포함할 필요가 없습니다. DTO는 필요한 데이터만을 포함하여, 클라이언트에 전달하는 데이터의 구조를 유연하게 정의할 수 있습니다.
  3. 성능: 엔티티에는 관계가 있는 다른 엔티티나 컬렉션이 포함될 수 있습니다. 예를 들어, User 엔티티가 여러 개의 Order 엔티티와 관계를 맺고 있을 경우, 모든 주문 데이터를 포함한 상태로 엔티티를 전달하면 불필요한 데이터까지 클라이언트로 전송될 수 있습니다. DTO를 사용하면 필요한 정보만 선택적으로 전달할 수 있습니다.
  4. 계층 간 의존성 분리: 엔티티는 보통 데이터베이스와의 연동을 담당하는 영역에 속하고, DTO는 주로 클라이언트와의 데이터 전송을 위한 객체입니다. 엔티티와 DTO를 분리하면 시스템의 각 계층이 독립적으로 동작할 수 있고, 변경 사항이 다른 계층에 영향을 미치지 않도록 할 수 있습니다.

따라서 엔티티를 DTO로 변환하여 사용하는 것은 보안, 성능, 유연성, 계층 간 의존성 분리 등을 고려한 좋은 설계 방식입니다.