[Spring boot] JPA ddl-auto 옵션

H_rin·2023년 7월 19일

개요

JPA의 인터페이스 중의 하나인 Hibernate는 엔티티만 등록해놓으면 데이터베이스 DDL을 자동으로 작성하여 테이블을 생성하거나 수정할 수 있다.

Entity에 테이블을 매핑하면 쿼리문을 사용하지 않고, 값 추출이 가능하다.
=> 추출하는 방법은 ddl-auto 옵션을 사용하면 된다.

ddl-auto 종류

spring.jpa.hibernate.ddl-auto=종류

  • create
  • create-drop
  • update
  • validate
  • none(default)

create

spring.jpa.hibernate.ddl-auto=create

엔티티로 등록된 클래스와 매핑되는 테이블을 자동으로 생성(create)

이 과정에서 기존에 해당 클래스와 매핑되는 테이블이 존재한다면 기존 테이블은 삭제되고, 다시 테이블을 생성하게 된다.

drop table if exists member cascade
Hibernate:

	create table member (
       	member_id bigint not null,
        address varchar(255),
        email varchar(255),
        name varchar(255),
        password varchar(255),
        phone_number varchar(255),
        primary key (member_id)
    )
 // 실행 시
 Hibernate:
 
 	drop table if exists member cascade

update

spring.jpa.hibernate.ddl-auto=update

엔티티로 등록된 클래스와 매핑되는 테이블이 없으면 새로 생성하는 것은 create와 동일하지만 기존 테이블이 존재한다면 위의 두 경우와 달리 테이블의 컬럼을 변경

기존에 존재하는 컬럼의 속성은 건드리지 않고, 새로운 컬럼이 추가되는 변경사항만 반영한다.

개발 초기에는 create 또는 update 옵션을 이용하고 추후에 validate로 옵션을 설정해주는 것이 좋다 !

ddl-auto 내용을 update한다면, 프로그램을 재시작하더라도 데이터가 사라지지 않습니다.

profile
hyerin / 한단계씩 배워가는 백엔드 개발자..(‘•̀ ▽ •́ )φ

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

정말 좋은 글 감사합니다!

답글 달기