스프링 부트로 게시판 만들기 -1

BRINCE·2022년 10월 9일
1

설계 해보기

어떤 구조를 가지고 동작을 시킬지 간단하게 유즈케이스를 다이어그램으로 그려본다
(draw.io 에서 쉽게 그릴 수 있다.)

ERD (Entity Relationship Diagram) 를 그려 기능을 구현할때 DB테이블 컬럼을 어떻게 만들지 구상을 한다 .

(설계가 가장 중요한듯 하다.)

프로젝트 생성하기

디펜던시 추가

Spring boot 로 처음 시작을 하면 라이브러리를 추가할 수 있다.

application.yaml 파일을 생성후에 설정값들을 넣는다.

(DB 아이디 비밀번호는 임시로 생성한것이지 걱정 하지 마세용)

첫 시작은 이렇게 설정한 후에 , ERD 로 구상했던 도메인 클래스들을 생성해준다.

Article 클래스와 ArticleComment 클래스를 생성 후에 각 필드에 ERD로 설계했던 데이터들을 선언해준다.

그리고 Jpa 디펜던시를 추가해준다.


(팁이 있다면 그냥 인텔리제이에서 넣는거보다 start.spring.io 사이트에서 디펜던시 추가 후에 해당 링크를 복붙하면 편하다.)

@Entity

Jpa (Java Persisitence API) 가 Entity 어노테이션 설정을 해준 클래스 필드 변수값들을 테이블로 자동 생성해서 데이터베이스를 만들어준다.

@Id / @GeneratedValue

SQL 에서 프라이머리 키 설정이라고 생각하면 된다. 로우가 추가될때마다 자동으로 숫자가 올라간다. (보통 id값 들은 데이터타입을 long 을 쓴다고 한다)

@Setter / @Column

  • Setter : 그냥 세터와 똑같다. 세터를 자동 생성 해준다.
  • Column : 컬럼 설정값이다. nullable = false 라면 기본으로 값이 들어갈때 null값이 들어가지 않는다. 이런식으로 디폴트값이나 길이를 설정 할 수 있다.

@OneToMany

양방향 맵핑이다. 게시글이 게시되고, 댓글이 달리려면 해당 게시글에 댓글이 달려야 되는 것처럼, 기본 주체는 게시글 (mappedBy)(테이블이름 기입) 로 설정하고, 종속(cascade)관계는 ALL 로 상위 테이블에서 하위 테이블로 모든 작업을 전파한다.
(해당 게시글에 달릴 댓글 리스트는 해시셋으로 관리한다.)

@Getter / @ToString

게터/ToString 을 자동생성 해준다.

@Table

테이블 이름이나 속성등을 설정 할 수 있다. (해당 어노테이션 안에 쓰인 @Index 는 컬럼에 인덱스값을 붙여준다고 한다.)

그리고 마찬가지로 ArticleComment 클래스도 @Entity 어노테이션을 붙인 후에 필드에 데이터들을 선언해준다.

댓글 같은 경우에는 게시글이 없어지면 댓글들도 삭제될 정도로 게시글에 얽혀있으니 마찬가지로 @ManyToOne 을 붙여 해당 "게시글" 에 댓글을 달 수 있게 필드에 Article 객체를 선언해준다.

profile
자스코드훔쳐보는변태

0개의 댓글