1. tb 만들기
게시글 : 댓글 = 1 : N
댓글 = 명사 = tb
1유저 n댓글 => 여러개의 행
댓글 1개 입장에서는 유저 1명이 만듦 => 하나의 행
어떤 유저가 어떤 게시글에 댓글을 남겼는지 알 수 있음 → 여러개 남길 수 o ⇒ unique(x)

package shop.mtcoding.blog.board.reply;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;
import shop.mtcoding.blog.board.Board;
import shop.mtcoding.blog.user.User;
import java.sql.Timestamp;
@NoArgsConstructor
@Getter
@Table(name = "reply_tb")
@Entity
public class Reply {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String content; // 댓글 내용
@ManyToOne(fetch = FetchType.LAZY)
private User user;
@ManyToOne(fetch = FetchType.LAZY)
private Board board;
@CreationTimestamp
private Timestamp createdAt;
}
2. 더미데이터
- 게시글 1번과 댓글 조회하면 댓글이 없으므로 outer join으로 조회해야 한다.
- 게시글은 user가 없는 게시글이 없기 때문에 inner로 join 가능하다.

3. 화면에 뿌리기
1.

2. ReplyRepository
public class ReplyRepository {
private final EntityManager em;
public List<Reply> findAllByBoardId(int boardId) {
Query query = em.createQuery("select r from Reply r join fetch r.user where r.board.id = :boardId", Reply.class); // inner join
query.setParameter("boardId", boardId);
List<Reply> replies = query.getResultList();
return replies;
}
}3. BoardService

4. BoardResponse.DetailDTO

4. 문제점
이와 같은 방법으로 하게 될 경우 댓글을 삭제 아이콘이 해당 댓글 작성자에게만 노출되어야 하는데 이를 위해 isReplyOwner라는 변수가 필요해지고 Reply List 내부의 reply 마다 isReplyOwner가 있어야 되므로 ReplyDTO가 필요해진다.
→ 쓰레기통은 4/10에…
Share article