댓글을 내용을 저장할 도메인을 설계해보자
들어가며
이번 포스팅에서는 댓글 기능을 구현하기 전에 간단하게 도메인부터 설계해보도록 하겠습니다.
사전 준비
만약 게시판 프로젝트를 하시려는 분은
이전포스팅 따라 해 만들어주시기 바랍니다!
[SpringBoot] 무작정 (REST API)CRUD 게시판을 만들기 @RestControllerAdvice, @ExceptionHanlder을 통해 전역 예외
@RestControllerAdvice을 통해 전역 예외처리를 명시하고 @ExceptionHanlder을 사용해 특정 예외처리를 구현해 보자! 들어가며 기능을 구현하다 보면 예외가 발생할 수 있습니다. 중복된 예외를 처리하게
back-stead.tistory.com
전체 코드는 깃에 올려두었습니다.
GitHub - CHISANW/message-board
Contribute to CHISANW/message-board development by creating an account on GitHub.
github.com
E-R 다이어그램
지금까지는 Board와 Meber까지는 만들었습니다. 이제 Commnet(댓글) 엔티티를 설계할차례입니다.
Comment 엔티티는
- comment_id : 자동증가로 기본키 값을 가지게합니다.
- comment_content : 댓글 내용
- dateTime : 댓글을 작성한 시간
- updateDateTime : 댓글을 수정한 시간 필드를 가지게 됩니다.
그리고 member와 Board와는 @ManyToOne 연관관계 매핑을 통해서 사용자와 게시글은 여러개의 댓글을 가질수있게 합니다.
Commnet 엔티티
Commnet.class
@Entity
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Comment {
@Id@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "comment_Id")
private Long id;
@Column(name = "comment_content")
private String content;
private LocalDateTime dateTime; // 댓글 작성시간
private LocalDateTime updateDateTime; // 댓글 수정 시간
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "board_Id")
private Board board;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "member_Id")
private Member member;
}
엔티티 클래스는 위와같이 작성합니다.
CommnetDto
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CommentDto {
private Long id;
private String comment;
private LocalDateTime dateTime;
@JsonInclude(JsonInclude.Include.NON_NULL)
private BoardDto boardDto;
@JsonInclude(JsonInclude.Include.NON_NULL)
private MemberDto memberDto;
}
Commnet 엔티티를 직접사용하지않고 Dto를 통해서 데이터를 주고받기 위해서 CommnetDto를 작성해줍니다.
이렇게 모두 작성해줬다면 기본적으로 댓글기능을 구현할 준비는 끝났습니다.
실행
이제 JPA가 정상적으로 DB의 DataBase를 생성해줬는지 application.yml 에서의 ddl-auto를 create로 변경해주고 실행해봅니다.
모두 정상적으로 생성된것을 볼수있다.
다음으로
지금까지 댓글기능을 구현하기전에 엔티티를 설계해봤습니다. 다음에는 댓글 작성 수정 삭제 기능을 구현해보도록하겠습니다. 감사합니다!!