DTO와 Entity

두주·2024년 1월 4일
1

TIL

목록 보기
27/58
data class CardResponse(
    val id: Long,
    val title: String,
    val content: String,
    val date: LocalDateTime,
    val author: String,
    val complete: Boolean,
    val comments : List<CommentResponse> ?= null
)

API에서 요청에 따른 응답 중 comments를 답해야 할 상황이 있어 위 코드를 추가했다.

cardResponse에서 List CommentResponse를 불러오는 이유는
CommentEntity와 CommentResponse가 서로 다른 클래스이기 때문이다.

나도 처음 코드를 작성할 때에는 CommentEntity를 불러와,
comments data를 활용하려고 했었는데 디버그 중 문제점들을 확인했다.

CommentEntity는 DB에 저장되는 엔티티 클래스이고,
CommentResponse는 클라이언트에게 응답으로 보내는 DTO 클래스이다.

DB에서 요청하는 내용과 클라이언트의 요구사항이 다를 수 있기에
서로의 분리가 필요하다.

예시로 Entity에서는 비밀번호와 개인정보 등 민감한 정보가 있을 수 있지만,
DTO에서는 해당 내용들을 제외할 수 있다.

또한 Entity 클래스에서는 다른 Entity와의 관계가 있을 수 있지만
DTO 클래스에는 그런 관계를 단순화하거나 풀어낼 수 있다.

Response에 Entity를 담을 경우 발생할 수 있는 문제점들이 많다.

따라서 cardResponse에서 List CommentResponse를 불러오는 것은
CommentEntity를 CommentResponse로 변환하여 클라이언트에게 보내기 위한 것이다.

클라이언트는 필요한 정보만 받을 수 있고, Entity 클래스의 변경에 영향을 받지 않게 되었다.

profile
야옹.

0개의 댓글