[Spring] 엔티티 생성

이다혜·2023년 11월 15일
0

Spring

목록 보기
5/27
post-thumbnail

출처 : 점프 투 스프링

엔티티

데이터베이스 테이블과 매핑되는 자바 클래스

질문과 답변을 할 수 있는 게시판을 만들기 위해 질문 엔티티와 답변 엔티티가 필요하다.

엔티티 속성 구상하기

  • 질문 엔티티
속성명설명
id질문의 고유 번호
subject질문의 제목
content질문의 내용
create_date질문을 작성한 일시
  • 답변 엔티티
속성명설명
id답변의 고유 번호
question질문
content답변의 내용
create_date답변을 작성한 일시

질문 엔티티 작성

package com.mysite.sbb;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;
import java.util.List;

@Setter
@Getter
@Entity
public class Question {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(length = 200)
    private String subject;

    @Column(columnDefinition = "TEXT")
    private String content;

    private LocalDateTime createDate;

    @OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
    private List<Answer> answerList;
}

답변 엔티티

package com.mysite.sbb;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;

@Getter
@Setter
@Entity
public class Answer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(columnDefinition = "TEXT")
    private String content;

    private LocalDateTime createDate;

    @ManyToOne
    private Question question;
}
  • @Entity
    : JPA가 엔티티로 인식한다.
  • @Id
    : 기본 키(primary key)로 지정하여 데이터베이스에 저장할 때 동일한 값으로 저장할 수 없다.
  • @GeneratedValue
    : 데이터를 저장할 때 값을 따로 설정하지 않아도 자동으로 1씩 증가하여 저장된다.
  • strategy = GenerationType.IDENTITY
    : 고유번호를 생성하는 옵션, 해당 컬럼만의 독립적인 시퀀스를 생생하여 번호를 증가시킬 때 사용한다.
  • @ManyToOne
    : 질문 하나에 여러개의 답변이 있을 수 있어서 답변과 질문이 N:1 관계임을 표시
  • @OneToMany
    : 반대로 질문과 답변은 1:N관계임을 표시
  • CascadeType.REMOVE
    : 질문을 삭제하면 답변들도 함께 삭제하기 위해 사용 업로드중..
    서버를 실행하면 테이블이 자동으로 생성된 것을 확인할 수 있다.

0개의 댓글