테이블 구조화 클래스 역할을 할 Entity 클래스를 생성합니다.
com.hhii 패키지 하위에 board.entity 패키지를 추가해 주고 Board라는 클래스를 생성해 주세요.
import lombok.*;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.time.LocalDateTime;
@Getter //해당 클래스에 포함된 멤버 변수의 모든 getter 메서드를 생성해 주는 어노테이션
// @Setter이 없는 이유는 엔티티 클래스가 테이블 자체이기 때문에 맴버 변수는 테이블의 컬럼이 되고,
// 컬럼에 대한 setter을 무작정 생성하면 객체의 값이 어느 시점에 변경되었는지 알 수 없음.
@NoArgsConstructor(access = AccessLevel.PROTECTED) //기본 생성자를 생성해 주는 어노테이션. access 속성을 이용해서 동일한 패키지 내의 클래스에서만
// 객체를 생성할 수 있도록 제어
@Entity // 테이블과 매핑되는 JPA의 엔티티 클래스임을 의미.
/*
클래스명이 테이블명으로 매핑됨.(Camel Case적용). 클래스명과 테이블명이 달라야 하는 상황은 클래스 레벨에 @Table(name="테이블명")을 선언하면 됨.
*/
public class Board {
@Id //해당 맴버가 엔티티의 PK임을 의미. id가 PK이다.
@GeneratedValue(strategy = GenerationType.IDENTITY) //PK 생성 전략을 설정하는 어노테이션. MySql은 AUTO_INCREMENT를 지원하고 DB생성 시
// AUTO_INCREMENT를 적용했으므로 선언해 줘야함.
private Long id;
private String title;
private String content;
private String writer;
private int hits;
private char deleteYn;
private LocalDateTime createdDate = LocalDateTime.now();
private LocalDateTime modifiedDate = LocalDateTime.now();
@Builder // 롬복에서 제공하는 기능. 생성자 대신 이용하는 패턴.(생성자를 대신하는 것)
public Board(String title, String content, String writer, int hits, char deleteYn) {
this.title = title;
this.content = content;
this.writer = writer;
this.hits = hits;
this.deleteYn = deleteYn;
}
}
board.entity 패키지에 생성(엔티티 클래스와 레파지토리 인터페이스는 같은 패키지에 위치해야 함.)
package com.hhii.board.entity;
import org.springframework.data.jpa.repository.JpaRepository;
// MyBatis의 Mapper와 = JPA의 Repository는 같다.
public interface BoardRepository extends JpaRepository<Board, Long> {
//JpaRepository 상속 받을 때 엔티티 클래스 타입 Board와 PK에 해당하는 데이터 타입을 선언해 줌. JpaRepository<T, ID>
}