@Entity
@Getter
@NoArgsConstructor
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String content;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="POST_ID")
private Post post;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="MEMBER_ID")
private Member member;
@Builder
public Comment(Long id, String content, Post post){
this.id = id;
this.content = content;
this.post = post;
}
public void setPost(Post post){
this.post = post;
post.getComments().add(this);
}
public void setMember(Member member){
this.member = member;
member.getComments().add(this);
}
public void update(String content) {
this.content = content;
}
}
@Getter
@NoArgsConstructor
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String content;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="POST_ID")
private Post post;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="MEMBER_ID")
private Member member;
@Builder
public Comment(Long id, String content, Post post){
this.id = id;
this.content = content;
this.post = post;
}
public void setPost(Post post){
this.post = post;
post.getComments().add(this);
}
public void setMember(Member member){
this.member = member;
member.getComments().add(this);
}
public void update(String content) {
this.content = content;
}
}
댓글 엔티티인데 댓글 등록할때 commentService에서 setPost,setMember로 어떤 게시글의 댓글인지, 누가 작성한 댓글인지 변수 설정해주고 save하는데,
여기에 setPost,setMember 함수들 보면 post랑 member의 댓글 리스트를 가져와서 해당 댓글을 추가해주는 방식으로 많이들 구현 하시길래 저도 작성해보았습니다.
post.getComments().add(this);member.getComments().add(this);근데 postman으로 실험해봤는데 이 부분들을 주석처리 해도 게시글의 댓글 목록 조회
같은 기능이 잘 작동하는데 굳이 저거를 작성해주는 이유가 있을까요?
post -> comment 말 그대로 출력은 됨. 근데 데이터 그러니까 출력물 말고 "객체" 기준으로 보자면 comment 객체에 있는 post 필드엔 값이 있냐는 거임
이 상태에서 comment.getPost().getTitle() or comment.getPost().getContent()를 해보셈 널포인터 뜸 post.getComment().get머시기머시기들은 문제가 안되는데 comment.getPost().get머시기들에서 문제가 될 수 있기 때문에 setPost 해주는 것임
객체 기준으로 생각해봐
스프링보다는 jpa 부분인데..