[개발] Spring boot

[Spring boot] DTO(Data Transfer Object) 쓰는 이유는?

  • -
반응형

 

Why Use DTO (Data Transfer Object)

1. 계층 간 데이터 전달을 간소화

DTO는 비즈니스 로직 계층과 프레젠테이션 계층 간의 데이터 전달을 위해 사용됩니다. 복잡한 엔티티를 직접 노출하는 대신, 필요한 데이터만을 포함하는 DTO를 만들어 데이터를 간단하고 안전하게 전달할 수 있습니다. 이를 통해 계층 간의 결합도를 낮추고 유지보수성을 향상시킵니다.

 

 

 

2. 엔티티와의 분리

JPA 엔티티는 데이터베이스와 직접 매핑되어 있습니다. 이를 직접 클라이언트에 노출하면 데이터베이스 구조 변경이 클라이언트에 영향을 줄 수 있습니다. 반면, DTO를 사용하면 데이터베이스와 비즈니스 로직의 변경을 클라이언트로부터 분리할 수 있습니다.

 

 

 

 

3. 보안 향상

DTO를 통해 노출할 필드를 제한함으로써 중요한 정보(예: 비밀번호, 내부 식별자 등)를 숨길 수 있습니다. 이는 애플리케이션의 보안 수준을 높일 수 있는 방법입니다.

 

 

 

 

4. 데이터 유효성 검증 및 변환

DTO는 입력 데이터에 대한 유효성 검증을 수행하거나 데이터를 특정 형식으로 변환할 때 유용합니다. 예를 들어, 날짜 형식을 문자열로 변환하거나 ID 대신 이름을 보여줄 때 DTO를 활용할 수 있습니다.

 

 

 

 

5. 성능 최적화

엔티티에는 종종 많은 연관 관계 및 필드가 포함되어 있습니다. 전체 엔티티를 클라이언트에 전달하면 불필요한 데이터를 전송하여 성능에 부담을 줄 수 있습니다. DTO를 사용하면 전송할 데이터를 최소화하여 네트워크 성능을 최적화할 수 있습니다.

 

 

 

 

6. 프론트엔드와 백엔드 간의 명시적 계약

DTO는 프론트엔드와 백엔드 간에 전달될 데이터의 구조를 명확하게 정의합니다. 이는 양쪽이 어떤 데이터가 교환될지에 대한 명시적 계약을 수립하는 데 도움이 되며, API의 안정성을 보장합니다.

 

 

 

 

7. API의 일관성 유지

다양한 엔티티의 데이터를 클라이언트에 반환할 때, DTO를 사용하면 특정 엔드포인트에서 반환하는 데이터 구조를 일관되게 유지할 수 있습니다. 이를 통해 API 설계가 명확해지고, 클라이언트가 데이터를 처리하는 데 혼란을 방지할 수 있습니다.

 

 

 

 

8. 데이터의 가공 및 계산

DTO는 엔티티의 필드들 간에 연산이나 가공이 필요한 경우에도 유용합니다. 예를 들어, 사용자의 전체 이름을 생성하거나, 복수의 엔티티에서 데이터를 결합하여 클라이언트에 반환해야 할 때 DTO를 사용하여 필요한 데이터를 준비할 수 있습니다.

 

 

 

 

9. 테스트 및 유지보수 용이

DTO는 테스트 케이스 작성 시에도 도움이 됩니다. DTO를 이용하면 비즈니스 로직을 테스트하는 데 필요한 데이터를 쉽게 준비하고 주입할 수 있습니다. 또한, 비즈니스 로직과 데이터베이스 구조의 변경이 클라이언트에 미치는 영향을 최소화하여 유지보수를 용이하게 합니다.

 

 

 

 

요약

DTO는 계층 간의 데이터 전달을 효율적으로 관리하고, 보안 및 성능 최적화를 위해 사용됩니다. 또한, 엔티티와 클라이언트 간의 직접적인 결합을 피하고 데이터의 일관성과 유효성을 유지하는 데 중요한 역할을 합니다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.