Spring Boot 게시판 만들기(RemakeBoard) - 03 ( Entity 생성, JPA 사용 )

FFTL:)·2021년 7월 17일
0

RemakeBoard

목록 보기
4/8

Entity 생성

이번에는 Entity를 생성해보겠습니다. Spring Boot에서 Spring JPA를 사용하게 된다면 프로젝트를 실행시킬 때 Entity 파일을 찾아 해당 파일의 정보에 맞춰 알아서 DB정보를 생성하게 됩니다.

=> 사실 이는 JPA 자체가 한다기 보다는 JPA를 통해서 hibernate라는 ORM을 이용하는 것 인데 이는 객체와 DB테이블을 매핑해주는 프레임 워크 입니다. javascript 진영에서도 typescript 를 이용한 typeORM이 있습니다.

이 때의 생성방식에 대하여 직접 설정해 줄 수 있는데 이는 resources/application.yml 이나 resources/application.properties 에서 설정을 할 수 있습니다.

spring:
  profiles:
    active: local

  #DB정보
  datasource:
    url: jdbc:mysql://localhost:3306/fftl_03_RemakeBoard?serverTimezone=UTC&characterEncoding=UTF-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

  #JPA 정보
  jpa:
    show-sql: true
    database-platform: org.hibernate.dialect.MySQL5Dialect
    hibernate:
      ddl-auto: create-drop

  h2:
    console:
      enabled: true

저는 이같이 spring, jpa ... 부분인데

  • show-sql: true 를 통해서 spring boot가 실행되며 Entity를 읽으며 만들게 되는 SQL의 로그를 볼수 있게 됩니다.

  • database-platform: org.hibernate.dialect.MySQLDialect를 통해서는 어떤 Database 문법을 사용할지에 대한 설정을 해줍니다.

  • hibernate의 ddl-auto: create-drop는 꽤나 중요한데 언제 테이블을 생성할지, 삭제할지에 대한 설정입니다. create를 이용하여 테이블이 없을 때 생성할지, update 추가되는 Entity가 있을 때에 추가하는 sql만 실행할지, create-drop을 테이블을 생성한 뒤 통해서 서버가 종료될 때에 삭제하도록 할지 등등 다양한 설정이 사용됩니다.

이 외에도 다양한 기능의 설정들이 존재하는데 show-sql: true를 통해서 출력되는 부분을 보기 쉽게 한다던가, 로그를 보일 수 있게 한다던가 하는 기능들이 있습니다.

일단은 저는 최소한의 기능만 사용하기 위해 조금만 설정을 해 두었습니다.

위처럼 application.yml 설정을 해두고 나면 이제 Entity를 생성해야 합니다.

package fftl.fftl03RemakeBoard.entity;

import lombok.Getter;

import javax.persistence.*;

@Entity
@Getter
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int userId;

    @Column
    private String username;
    @Column
    private String password;
    @Column
    private String nickname;
    @Column
    private String userRegdate;

}

Entity는 위와 같이 만들게 됩니다.

  • @Entity 어노테이션을 추가해 해당 클래스가 @Entity 임을 알려주어 프로젝트 실행 시 hibernate가 해당 클래스를 읽어들여 테이블로 생성하도록 만듭니다.

  • @Getter 어노테이션은 Lombok 이라는 라이브러리의 기능이며 Getter, Setter 등을 어노테이션만으로 만들 수 있도록 도와주는 기능을 합니다. 저는 @Getter를 이용해 Getter만을 미리 만들어 주었습니다. Entity class는 함부로 변경되어서는 안되며 만약 Setter를 만들어 놓으면 무분별한 변경을 사용할 수도 있기 때문에 사용하지 않았습니다.

  • @Id 는 해당 테이블의 primary key값을 명시해 주며 @GeneratedValue(strategy = GenerationType.AUTO)를 이용해 primary key값의 자동 생성에 대한 규칙을 지정해 주게 됩니다.

  • @Column 는 이용해 해당 속성이 일반 속성임을 명시해줍니다.

위와 같은 방법으로 세 개의 Entity를 생성하였고 프로젝트를 실행하니 아래처럼 Hibernate가 SQL문을 실행하는 것을 볼 수 있습니다.

서버가 실행된 이후 DB를 확인해보면 아래와 같이 테이블이 잘 생성된 것을 확인할 수 있습니다.

해당 내용의 프로젝트는 Github에서 확인할 수 있습니다.

profile
생각하는 개발자가 되자!

0개의 댓글