Springboot

[Spring Boot] Spring JPA 엔티티 클래스 작성해서 테이블 만들기

Jenny376 2023. 3. 20. 22:22
안녕하세요. hia의 개발 story입니다.

 

저번 글에 이어 JPA를 이용하여 MariaDB에 테이블을 만들어보도록 하겠습니다.

Spring Data JPA를 이용하면 엔티티 클래스를 이용해서 테이블을 자동으로 만들 수 있습니다.

DDL을 작성하는 게 꽤나 귀찮은데 이렇게 만들 수 있다면 조금 더 편하게 코딩을 할 수 있겠네요. 

 

Entity 클래스 만들기

 

우선 entity 클래스를 하나 만들어 준 후 아래에 Sample 클래스를 만들어줬습니다.

package com.jenny.project.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.persistence.*;

@Entity
@Table(name = "sample")
public class Sample {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(length = 100, nullable = true)
    private String value;

    @Column(columnDefinition = "varchar(10) default 'Y'")
    private String useYN;

}

 

@Entity : Entity 클래스를 만들기 위해서 필요한 어노테이션입니다.

@Table : 데이터베이스상에서 엔티티 클래스를 어떠한 테이블로 생성할 것인지에 대한 정보를 담기 위한 어노테이션입니다. 

               () 안에는 테이블 이름, 인덱스, 스키마 등을 생성 및 설정 할 수 있습니다.

               생략이 가능하며 이름을 지정하지 않으면 클래스명 그대로 테이블이 생성됩니다. 

@Id : @Entity가 붙은 클래스는 Primary Key에 해당하는 필드에 @Id로 지정해주어야만 합니다. 

         지정하지 않으면 에러가 발생합니다. 

@GeneratedValue :  Id값을 직접 입력 받지 않는 경우 자동으로 생성하게 하기 위한 어노테이션입니다.

                                   4가지의 키 생성 전략 방식이 있으며 필요에 따라 결정하여 사용하면 됩니다.

  GenerationType.Auto - JPA 구현체가 생성 방식을 결정

  GenerationType.IDENTITY - 사용하는 데이터베이스가 키 생성을 결정 ( MariaDB의 경우 auto increment 방식 이용)

  GenerationType.SEQUENCE - sequence를 이용하여 키를 생성 @SequenceGenerator와 같이 사용

  GenerationType.TABLE - 키를 생성하는 테이블을 이용하여 키 생성 @TableGenerator와 같이 사용

 

@Column : 테이블에 컬럼을 추가할 때 사용하는 어노테이션입니다. 

                    컬럼의 여러 속성을 지정할 수 있습니다. 

 

application.properties 수정 

 

아래의 설정을 추가하여 줍니다. 

 

spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.show-sql=true

 

- spring.jpa.hibernate.ddl-auto : 프로젝트 실행 시 자동으로 DDL을 생성할 것인지를 설정합니다. 

                                                        create는 매번 새로 생성을 시도

                                                        update는 테이블이 없으면 create, 테이블이 있고 변경이 필요한 경우에는 alter
- spring.jpa.properties.hibernate.format_sql : Hibernate가 동작하면서 발생하는 SQL문을 포맷팅하여 출력합니다.
- spring.jpa.show-sql : 처리 시에 발생하는 SQL문을 보여줄지 여부를 결정합니다. 

 

위의 클래스와 설정을 추가한 후 프로젝트를 실행시키면 아래와 같은 로그가 찍힙니다.

 

DB에서 테이블이 생성되었는지 확인 
select * from sample;

데이터는 없지만 아래와 같이 생성된 것을 확인할 수 있습니다.