Entity
- 데이터베이스 테이블과 매핑되는 자바 클래스를 말한다.
- 모델 또는 도메인 모델이라고도 부른다.
Qestion Entity
package com.mysite.sbb;
import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@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;
}
- 엔티티를 만들기 위해 @Entity 적용 (JPA가 엔티티로 인식할 수 있다.)
@id
- id 속성을 기본 키로 지정한다.
- 기본 키로 지정하면 이제 id 속성의 값을 데이터베이스에 저장할 때 동일한 값으로 저장 불가
- 고유 번호를 기본키로 한 이유는 고유 번호는 엔티티에서 각 데이터를 구분하난 유효한 값으로 중복되면 안 되기 때문
@GeneratedValue
- 데이터를 저장할 때 해당 속성에 값을 따로 세팅하지 않아도 1씩 자동으로 증가 저장
- strategy는 고유번호를 생성하는 옵션으로 GenerationType.IDENTITY는 해당 컬럼만의 독립적인 시퀀스를 생성하여 번호를 증가시킬 때 사용
@Column
- 컬럼의 세부 설정을 위해 사용
- length는 컬럼의 길이를 설정할 때 사용
- columnDefinition은 컬럼의 속성을 정의할 때 사용
- columnDefinition = "TEXT"은 내용처럼 글자 수를 제한할 수 없는 경우
Answer Entity
package com.mysite.sbb;
import javax.persistence.*;
import java.time.LocalDateTime;
@Entity
public class Answer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(columnDefinition = "TEXT")
private String content;
private LocalDateTime createDate;
private Question question;
}