spring boot 공부 - 2 - 엔티티

문문·2023년 4월 23일
0

엔티티 클래스 생성하기

테이블 구조화 클래스 역할을 할 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;
    }
}

JPA 레파지토리 인터페이스 생성하기

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>
}

0개의 댓글