상똥이의 Back-End 공부방

[Board Project] 3. 도메인 설계 (ERD작성/ 자바 코드 작성) 본문

프로젝트/게시판 만들기

[Board Project] 3. 도메인 설계 (ERD작성/ 자바 코드 작성)

상똥백 2023. 9. 5. 20:10

목차

1. ERD 작성

2. 자바 클래스에 도메인 표현

 

[1. ERD작성]

1. 테이블을 Article(게시글), ArticleComment(댓글) 두 가지로 생성한다

 - 게시글 테이블의 pk는 작성자 id로 설정한다

 - 게시글에는 제목, 내용, 해시태그 등의 속성이 필요하다

 - 게시글에는 생성일시, 생성자, 수정일시, 수정자 등의 메타데이터가 필요하다

 - 댓글 테이블의 pk는 작성자 id로 설정하고 fk는 게시글 작성자 id로 설정한다

 - 댓글에는 내용 등의 속성이 필요하다

 - 댓글에는 생성일시, 생성자, 수정일시, 수정자 등의 메타데이터가 필요하다

2. ERD 작성

 (1) draw.io (diagrams.net) 에 들어가서 새 다이어그램 만들기 클릭

 (2) ER다이어그램 선택 후 생성

 (3) 파일 형태 SVL로 바꾸기

 (4) 폴더 선택  : Board-practice/main/Document

 (5) 아래와 같이 생성

 (6) ctrl+s 누르면 repository에 ERD 생성됨

 

[2. 자바 클래스에 도메인 표현]

1. 게시글 클래스

 (1) 경로 : main/java/domain

 (2) 클래스명 : Article

 (3) 도메인 이름 및 타입

  - 작성자 아이디 : id, Long

  - 내용 : content, String

  - 해시태그 : hashtag, String

  - 작성일시 : createdAt, LocalDateTime

  - 작성자 : createdBy, String

  - 수정일시 : modifiedAt, LocalDateTime

  - 수정자 : modifiedBy, String

 (4) 코드 (접은글)

더보기
package com.fastcampus.projectbord.domain;

import java.time.LocalDateTime;

public class Article {
    private Long id;    // 게시글 작성자 아이디, PK
    private String title;   // 게시글 제목
    private String content; //게시글 내용
    private String hashtag; // 해시태그
    private LocalDateTime createdAt;    // 게시글 작성일시
    private String createdBy;   // 게시글 생성자
    private LocalDateTime modifiedAt;   // 게시글 수정일시
    private String modifiedBy;  // 게시글 수정자
}

 

2. 댓글 클래스

 (1) 경로 : main/java/domain

 (2) 클래스명 : Article

 (3) 도메인 이름 및 타입

  - 작성자 아이디 : id, Long

  - 댓글이 달린 게시글 : article, Article

  - 내용 : content, String

  - 작성일시 : createdAt, LocalDateTime

  - 작성자 : createdBy, String

  - 수정일시 : modifiedAt, LocalDateTime

  - 수정자 : modifiedBy, String

 (4) 코드 (접은글)

더보기
package com.fastcampus.projectbord.domain;

import java.time.LocalDateTime;

public class ArticleComment {
    private Long id;    // 댓글 작성자 아이디
    private Article article;    // 댓글이 달린 게시글
    private String content; // 댓글 내용
    
    private LocalDateTime createdAt;    // 댓글 작성일시
    private String createdBy;   // 댓글 작성자
    private LocalDateTime modifiedAt;   // 댓글 수정일시
    private String modifiedBy;  // 댓글 수정자
}

 

 

마무리~~~

도메인설계와 작성을 모두 마무리 했으므로 칸반보드에서 도메인 설계를 Done으로 옮긴다

다음엔 데이터베이스와 인텔리제이를 연동할 것이므로 ㄷ이터베이스 로직 구현을 ready로 옮긴다