기본적인 게시판을 개발해보자.
프로젝트의 개발 프로세스가 정해진 규격은 없지만, 무턱대로 서비스 로직을 작성하지는 않을 것이다.
시스템 전체의 설계를 진행하고, 데이터베이스를 설계하는 것이 가장 우선이다.
우리는 비회원 게시판을 개발할 예정이고, 기본 레이아웃은 다음과 같다.


프론트엔드 단의 디자인은 무시하고 우리는 게시판에 들어갈 데이터를 관리해보자.
MySQL WorkBench의 ERD 기능을 통해서 GUI를 이용해 테이블을 그려볼 수 있다.

다음과 같은 테이블과 entity를 가지고 있고, board와 post, post와 reply 테이블은 각각 1:n 관계에 있다.

매우 간단하게 테이블을 만들었다.
각 테이블에 매핑되는 코드를 작성한다.
//board Table
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@Entity(name = "board")
public class BoardEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String boardName;
private String status;
}
//post Table
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@Entity(name = "post")
public class PostEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long boardId;
private String userName;
private String password;
private String email;
private String status;
private String title;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime postedAt;
}
//reply Table
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ToString
@Entity(name = "reply")
public class ReplyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String userName;
private String password;
private String status;
private String title;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime repliedAt;
}
content 필드의 타입은 MySQL에서 TEXT 타입으로 지원하는데,
자바에서 문자열과 매핑하기 위해서 TEXT로 정의해주는 @Column 어노테이션이 필요하다.
다음 포스팅에서 End Point를 개발하는 것으로 한다.