일단 클래스를 다 만들어 놓고 시작 !
[ ReplyJPARepository ]
package shop.mtcoding.blog.reply; import org.springframework.data.jpa.repository.JpaRepository; public interface ReplyJPARepository extends JpaRepository<Reply, Integer> { }
1. 관계 살펴보기
1-1. user는 게시글에 댓글을 여러개(N개) 작성 가능 (user - 1 / reply - N) 1-2. 댓글(N) 1개는 유저 1명이서 만들어 낼 수 있다. 2. 게시글(1)에 댓글(N) 여러개 적을 수 있음. (게시글 - 1 / reply - N)
엔포드 = 1 (프라이머리키) : N (포링키, 드라이빙 테이블)
2. Reply 테이블 생성
package shop.mtcoding.blog.reply; import jakarta.persistence.*; import lombok.Builder; import lombok.Data; 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 @Data @Table(name = "reply_tb") @Entity public class Reply { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String comment; @ManyToOne(fetch = FetchType.LAZY) private User user; @ManyToOne(fetch = FetchType.LAZY) private Board board; @CreationTimestamp private Timestamp createdAt; @Builder public Reply(Integer id, String comment, User user, Board board, Timestamp createdAt) { this.id = id; this.comment = comment; this.user = user; this.board = board; this.createdAt = createdAt; } }
3. 더미 데이터 넣기
insert into reply_tb(comment, board_id, user_id, created_at) values('댓글1', 4, 1, now()); insert into reply_tb(comment, board_id, user_id, created_at) values('댓글2', 4, 1, now()); insert into reply_tb(comment, board_id, user_id, created_at) values('댓글3', 4, 2, now()); insert into reply_tb(comment, board_id, user_id, created_at) values('댓글4', 3, 2, now());
더미를 확실하게 인지하자! (더미를 막 만들지 마라. 시나리오를 생각하고 만들어라!)
게시글 4번에 댓글 3개(ssar, cos, love) 있음. 게시글 3번엔 댓글(cos) 있음.
1번과 2번 게시글에는 댓글 x / 3번 글 - 댓글 1개 / 4번 글 - 댓글 3개
→ 이런 식으로 파악이 되어있어야 함!
Share article