이번에 jpa를 통해 DB테이블을 생성하고
question , answer 패키지를 아래와 같이 생성해주고

Question.java
Answer.java 이름에 자바클래스 파일을 생성 해줍니다.

Answer.java 파일코드
package com.AdA.backend.answer;
import java.time.LocalDateTime;
import org.springframework.data.annotation.CreatedDate;
import com.AdA.backend.question.Question;
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;
@CreatedDate
private LocalDateTime createDate;
@ManyToOne
private Question question;
}
Question.java 파일코드
package com.AdA.backend.question;
import java.time.LocalDateTime;
import java.util.List;
import com.AdA.backend.answer.Answer;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
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;
// 필드 이름을 createdDate로 수정
private LocalDateTime createdDate;
@OneToMany(mappedBy = "question", cascade = CascadeType.REMOVE)
private List<Answer> answerList;
}
파일에 그대로 파일에 위와같은 코드를 수정해줍니다.
그러면 실제로 JPA 형식으로 복잡한 SQL 쿼리문 작성없이 DB테이블이 생성된겁니다.

JPA는 반복적인 CRUD SQL을 처리해준다. JPA는 매핑된 관계를 이용해서 SQL을 생성하고 실행하는데, 개발자는 어떤 SQL이 실행될지 생각만하면 되고, 예측도 쉽게 할 수 있고 , 코드의 가독성 및 유지보수의 향상 , 데이터베이스 독립성 , 객체와 데이터베이스간의 매핑 , 자동화 된 데이터베이스 처리 다양한 측면에서 CRUD 작업을 처리하기에 편리 하기 때문에 사용 합니다.
코드를 순차적으로 살펴볼건데
사용되었던 , JPA 속성을 살펴볼거다.
@Getter , @Setter , @Entity 3개의 이노테이션 속성이 클래스 위에 있다.
각각의 어노테이션은 코드의 가독성을 높이고 , 개발자의 반복적인 작업을 줄여주는 데 도움을 준다.
간단하게 생각하면 불필요한 코드 작성을 막아준다. 클래스 필드에 대해 자동으로 getter와 setter 매서드를 생성 해준다.
Entity_ 어노테이션은 테이블 처럼 취급 할 수 있다.
또한
primary key(기본키)로 취급
기본키의 값을 어떻게 생성할지를 지정
한 엔터티가 여러개의 엔터티와 연결할수있는 일대 다 관계를 말함.
간단하게 외래키단하게 외래키(Foreign Key)를 말한다.
생성된 날짜와 시간을 자동으로 생성해주는 속성 (게시판,채팅)에 사용
컬럼 200자 내외로 길이 제한을 한다.
@속성의 이름을 지정해주고 private를 작성하고 , 그다음 컬럼에 자료형을 적어주고 컬럼의 명을 작성하면 컬럼이 자동으로 만들어진 것 이다.
@column (추가적인 속성)
private String name; 이런식으로 작성하면 컬럼이 생성된것이다.
각각의 클래스 jpa 파일을 살펴보면
import로 필요한 라이브러리들을 불러와주고,
id , content , createtime , question 컬럼 4개를 만들어 주었다.
마찬가지로 import로 필요한 라이브러리를 불러와준다.
id, subject , content , createdDate , answerList 컬럼 5개를 만들어주었다.
이렇게 까지 하면 jpa를 통한 CRUD 구성의 DB 구축이 완료 되었다.
추가적으로 질문 사항이 있으시면
discord : youjininny_ 로 연락주시면 됩니다.