Post

DTO vs Entity vs 기타 클래스 정리

Spring Boot에서 DTO, Entity, 서비스 클래스의 역할과 차이점

DTO vs Entity vs 기타 클래스 정리

DTO vs 엔티티 vs 기타 클래스

  1. DTO (Data Transfer Object):
    • 역할: 주로 클라이언트와 서버 간의 데이터 전송에 사용됩니다.
    • : ApiResponse는 API 응답을 클라이언트에 전달하기 위해 사용되는 데이터 구조입니다.
    • 특징: 데이터베이스와 직접적인 관계가 없고, 직렬화와 역직렬화가 용이합니다.
  2. 엔티티 (Entity):
    • 역할: 데이터베이스 테이블과 매핑되는 객체로, 데이터베이스의 행을 나타냅니다.
    • : User, Order, Product 등 데이터베이스와 직접 상호작용하는 클래스들.
    • 특징: ORM(Object-Relational Mapping) 프레임워크를 사용하여 데이터베이스와 상호작용합니다.
  3. 기타 클래스:
    • 역할: 서비스, 유틸리티, 구성 등을 담당하는 클래스들.
    • : 서비스 클래스(UserService), 유틸리티 클래스(DateUtils), 구성 클래스(AppConfig).
    • 특징: 비즈니스 로직, 유틸리티 기능, 구성 설정 등을 포함합니다.

ApiResponse의 용도와 정의 예시

ApiResponse는 API 요청에 대한 응답을 클라이언트에 전달하기 위한 DTO로 사용하는 것이 일반적입니다. 예를 들어, 성공 또는 실패 메시지, 상태 코드, 데이터 등을 포함할 수 있습니다.

다음은 ApiResponse 클래스의 간단한 예시입니다:

1
2
3
4
5
data class ApiResponse(
    val status: String,
    val message: String,
    val data: Any? = null
)

이렇게 정의된 ApiResponse는 API 응답을 표준화하여 클라이언트에 일관된 형식으로 데이터를 전달할 수 있게 합니다.

코드 예시와 설명

ApiResponse가 DTO로 사용된 코드 예시:

1
2
3
4
5
@PutMapping("/annuity-lotto-number/")
suspend fun putAnnuityLottoNumber(@RequestParam mode: String): ApiResponse {
    val latestDrwNo = annuityLottoService.getLatestAnnuityDrwNo()
    return annuityLottoService.fetchAndStoreAnnuityLottoNumber(latestDrwNo + 1, mode)
}

위 코드에서 ApiResponseannuityLottoService.fetchAndStoreAnnuityLottoNumber 메서드의 반환값으로 사용됩니다. 이 메서드는 최신 로또 번호를 가져와서 저장한 후, 그 결과를 API 응답으로 반환합니다.

따라서, ApiResponse는 DTO로 사용하는 것이 맞습니다. 이는 API 응답을 구조화된 형식으로 클라이언트에 전달하기 위한 것입니다.

This post is licensed under CC BY 4.0 by the author.