이제 '댓글 기능'이 남았다.
'댓글'에는 댓글의 내용, 누가 썼는지, 어디에 썼는지, 언제 썼는지 등이 들어가야 한다.
즉, image 오브젝트와 User 오브젝트도 들어가야 하는데, '연관관계'를 잘 생각해야 한다.
1개의 댓글이 있을 때, 이 댓글을 작성할 수 있는 유저는 1명이다.
반대로 1명의 유저는 여러개의 댓글을 작성할 수 있다.
또, 1개의 댓글은 하나의 게시글에 달릴 수 있고,
하나의 게시글에는 여러개의 댓글이 달릴 수 있다.
User 오브젝트와 Image 오브젝트 모두에게 @ManyToOne의 관계가 된다.
@ManyToOne은 Default값이 EAGER이고, @OneToMany는 LAZY인것을 잊지말자.
package com.cos.photogramstart.domain.comment;
import com.cos.photogramstart.domain.User;
import com.cos.photogramstart.domain.image.Image;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.time.LocalDateTime;
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(length = 100, nullable = false)
private String content;
@JoinColumn(name = "userId")
@ManyToOne(fetch = FetchType.EAGER) //딸려오는것들이 여러개면 Lazy, 한개면 EAGER
private User user;
@JoinColumn(name = "imageId")
@ManyToOne(fetch = FetchType.EAGER)
private Image image;
private LocalDateTime createDate; //데이터가 입력된 시간
@PrePersist
public void createDate() {
this.createDate = LocalDateTime.now();
}
}
.
package com.cos.photogramstart.domain.comment;
import org.springframework.data.jpa.repository.JpaRepository;
public interface CommentRepository extends JpaRepository<Comment, Integer> {
}
'메타코딩 SNS프로젝트' 카테고리의 다른 글
56. chapter 10. 댓글 - 댓글쓰기 DTO 생성 및 DB에 INSERT하기 (0) | 2022.07.11 |
---|---|
55. chapter 10. 댓글 - Comment API 생성하기, Ajax 작성하기 (컨트롤러, 서비스 만들기), 댓글쓰기 Ajax 함수 만들기 (0) | 2022.07.09 |
51. chapter 9. 기타 기능 구현 - 인기 페이지 구현 완료 (0) | 2022.07.09 |
Database 명령어 목록 (0) | 2022.07.08 |
49. chapter8. 좋아요 구현 - 좋아요 버튼 기능 구현 완료 (0) | 2022.07.08 |