점프 투 스프링부트를 참고하여 학습,작성하였습니다.
1.엔티티
점프 투 스프링 부트를 참고하여 질문, 답변 2개의 엔티 티를 제작한다.
1-1.엔티티 속성정의
질문엔티티
- id:고유번호
- subject:제목
- content:내용
- createData:작성일
답변엔티티
- id:고유번호
- question:질문데이터
- content:내용
- createDate:작성한 일시
2.엔티티 생성
다음경로에 model 패키지를 만들고 내부에 엔티티를 생성한다.
├─ src
│ ├─ main
│ │ ├─ java
│ │ │ └─ com
│ │ │ └─ example
│ │ │ ├─ controller
│ │ │ │ └─ MyController.java
│ │ │ ├─ DemoApplication.java
│ │ │ └─ model
│ │ │ └─ Question.java
3.질문 엔티티
package com.example.model;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.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;
}
3-1.패키지 및 import
JPA와 Lombok 관련 클래스로 다양한 클래스와 어노테이션을 가져온다.
package com.example.model;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;
3-2.Question 엔티티 클래스
@Getter와 @Setter: Lombok 어노테이션으로, 자동으로 getter와 setter 메서드를 생성
@Entity: JPA에서 엔티티 클래스임을 나타내는 어노테이션(클래스는 데이터베이스의 테이블과 매핑)
@Getter
@Setter
@Entity
public class Question {
3-3.필드 정의
@Id: 해당 필드가 엔티티의 주 식별자(primary key)임을 나타내는 어노테이션
@GeneratedValue: 주 식별자의 값이 자동으로 생성되는 전략을 지정
GenerationType.IDENTITY는 데이터베이스의 자동 증가 컬럼을 사용하여 값이 생성됨을 의미
Integer : 정수타입
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column(length = 200): 데이터베이스의 특정 컬럼 속성을 지정(최대길이 200)
String: 문자열타입
@Column(length = 200)
private String subject;
@Column(columnDefinition = "TEXT"): content 필드를 TEXT 타입으로 정의
@Column(columnDefinition = "TEXT")
private String content;
LocalDateTime을 이용하여 시간정보를 저장
private LocalDateTime createDate;
4.답변 엔티티
질문 엔티티와 동일한 방법으로 생성
package com.example.model;
import java.time.LocalDateTime;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.ManyToOne;
import lombok.Getter;
import lombok.Setter;
@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;
}
4-1. 질문과 답변
하나의 질문에는 다수의 답변이 달릴수있다. (1대 다)
@ManyToOne 어노테이션: 여러 개의 Answer가 하나의 Question에 연결될 수 있음을 의미
Answer 엔티티가 Question 엔티티를 참조하게 된다.
즉 Answer 테이블에 question_id라는 외래 키 컬럼이 존재하게 된다.
@ManyToOne
private Question question;
5.확인
http://localhost:8080/h2-console/에 접속하여 DB에 다음 2개의 엔티티가 생성됨을 확인한다.
반응형
'BackEnd > SpringBoot' 카테고리의 다른 글
[Spring Boot] 리포지터리로 데이터 저장 (0) | 2024.06.21 |
---|---|
[Spring Boot] ORM, JPA (0) | 2024.06.21 |
[Spring Boot] URL 매핑, 컨트롤러 (0) | 2024.06.19 |