졸작을 하면서 두개의 게시판에 댓글 및 대댓글 기능을 각각 넣어야 하는 상황이었다.
동네 줍깅 서비스에서 운영하는 게시판은 2가지가 있다.
댓글 및 대댓글은 각각의 게시판에서 동일한 구조로서 사용되기 때문에 하나의 댓글 및 대댓글 도메인을 만들고 이를 각각에 게시판에 붙히는 구조로 기능을 구현했다.
우선 댓글 기능을 먼저 만들기로 하였고, Comment 라는 엔티티를 다음과 같이 만들어주었다.
Comment
@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Comment {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "comment_id", nullable = false)
Long id;
@Embedded
@Column(nullable = false)
private CommentBody commentBody;
@ManyToOne
@JoinColumn(name = "member_id")
private Member writer;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "recruitment_board_id")
private RecruitmentBoard recruitmentBoard;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "certification_board_id")
private CertificationBoard certificationBoard;
@Column(nullable = false)
private LocalDateTime createdDateTime;
@Column(nullable = false)
private LocalDateTime lastModifiedDateTime;
//...
}