[데브코스] Spring Boot 인증·인가(Auth) (6강) - PostDto / PostCommentDto에 작성자 정보 추가

zuno·2026년 1월 6일

이번 강의에서는 응답 DTO에 작성자 정보를 명시적으로 포함하도록 구조를 변경했다.
엔티티에 author(Member)가 연결된 상태에서,
API 응답에서도 “누가 작성했는지”를 명확하게 내려주기 위한 작업이다.


❗ 작업 배경

이전 단계까지는 다음과 같은 한계가 있었다.

  • 글과 댓글에는 작성자(author)가 존재
  • 하지만 API 응답(DTO)에는 작성자 정보가 없음
  • 프론트엔드 입장에서는:
    • 작성자 id
    • 작성자 이름(닉네임)
      를 알 수 없는 상태

👉 엔티티에는 있지만, 응답에는 없는 정보였다.


🛠 6강 작업 내용 요약

작업 설명

  • PostDto에 작성자 정보 추가
    • authorId
    • authorName
  • PostCommentDto에 작성자 정보 추가
    • authorId
    • authorName
  • PostCommentDto에 댓글이 속한 글 식별을 위한
    • postId 추가

1️⃣ Member 엔티티에 이름 조회 메서드 추가

public String getName() {
    return nickname;
}
  • DTO에서 작성자 이름을 꺼내기 위해 필요
  • Member 내부 필드(nickname)를 직접 노출하지 않도록 접근 메서드 사용

2️⃣ PostDto 수정

필드 추가

public record PostDto(
    int id,
    LocalDateTime createDate,
    LocalDateTime modifyDate,
    int authorId,
    String authorName,
    String title,
    String content
) {

생성자에서 author 정보 매핑

public PostDto(Post post) {
    this(
        post.getId(),
        post.getCreateDate(),
        post.getModifyDate(),
        post.getAuthor().getId(),
        post.getAuthor().getName(),
        post.getTitle(),
        post.getContent()
    );
}
  • 엔티티(Post) → DTO 변환 시
  • 작성자의 id와 이름을 함께 전달

3️⃣ PostCommentDto 수정

필드 추가

public record PostCommentDto(
    int id,
    LocalDateTime createDate,
    LocalDateTime modifyDate,
    int authorId,
    String authorName,
    int postId,
    String content
) {

생성자에서 author / post 정보 매핑

public PostCommentDto(PostComment postComment) {
    this(
        postComment.getId(),
        postComment.getCreateDate(),
        postComment.getModifyDate(),
        postComment.getAuthor().getId(),
        postComment.getAuthor().getName(),
        postComment.getPost().getId(),
        postComment.getContent()
    );
}
  • 댓글 작성자 정보(author)
  • 댓글이 속한 글(post)의 id를 함께 응답에 포함

❓ 구현 중 정리한 포인트

DTO에 작성자 정보를 넣는 이유

  • 엔티티는 내부 도메인 모델
  • API 응답은 명확한 데이터 전달이 목적
  • 프론트엔드에서:
    • 작성자 표시
    • 작성자 기준 처리
      를 위해 id / name이 필요

엔티티를 그대로 반환하지 않는 이유

  • 엔티티 구조가 그대로 노출됨
  • 연관관계로 인한 불필요한 데이터 포함 가능
  • DTO를 통해:
    • 필요한 정보만
    • 의도한 형태로 응답 구성

📌 정리

  • 글(Post), 댓글(PostComment)의 작성자 정보가 DTO에 포함됨
  • API 응답만 보고도 “누가 썼는지”를 판단 가능
  • 엔티티 구조와 API 응답 구조를 분리한 상태 유지

0개의 댓글