DTO – Data Transfer Object

Data Transfer Object는 애플리케이션의 여러 계층 간에 데이터를 전송하기 위해 사용하는 객체
DTO는 데이터베이스나 비즈니스 로직 계층의 내부 구현을 외부로 노출하지 않고 데이터를 캡슐화하여 전송하는 역할
주요 역할과 이점
- 캡슐화:
비즈니스 로직을 캡슐화하여 외부에 노출하지 않고, 필요한 데이터만 전송 - 보안:
민감한 정보를 보호하고, 필요한 데이터만 노출함으로써 보안을 강화 - 데이터 무결성:
데이터 전송 시 불필요한 데이터 변형을 방지하여 데이터 무결성을 유지 - 성능 향상:
필요한 데이터만 전송함으로써 네트워크 트래픽을 줄여 성능을 향상 - 유지보수성:
시스템 계층 간 의존성을 줄여 코드의 유지 보수성을 높임 (프리젠테이션 계층과 비즈니스 로직 계층을 분리) - 데이터 형식 변환:
데이터베이스 모델과 다르게 포맷된 데이터가 필요할 때 DTO를 사용하여 쉽게 변환
UserEntity
public class User { public int Id { get; set; } public string FullName { get; set; } public string Email { get; set; } public string Password { get; set; } // 민감한 정보 }
UserDTO
public class UserDTO { public int Id { get; set; } public string FullName { get; set; } public string Email { get; set; } }
사용 예제
public UserDTO GetUser(int id) { User user = userService.GetUserById(id); // User 엔티티를 가져옴 UserDTO userDTO = new UserDTO { Id = user.Id, FullName = user.FullName, Email = user.Email }; return userDTO; // UserDTO 객체를 반환 }
UserDTO
는 User
Entity에서 필요한 데이터만 클라이언트로 전송