[Spring Boot/JPA] hibernate.ddl-auto

DongHwan·2021년 7월 8일
0

Spring & Spring Boot

목록 보기
1/5

Spring Boot에서 DB 접근을 위해 Entity와 Repository를 만들고 테스트를 돌려보았는데, 오류가 발생했다. 오류코드를 살펴보니 DB에 테이블이 존재하지 않았기에 발생하는 오류였다. 따로 DB에 접근하여 테이블을 만들 수 있으니, 귀찮기때문에 검색을 통해 자동으로 테이블을 만드는 방법을 알아보았다. 그러던 도중 발견한 것이 spring.jpa.hibernate.ddl-auto옵션이다.

application.properties에서 설정이 가능한 spring.jpa.hibernate.ddl-auto 옵션을 간단히 설명하면, WebApplication이 실행될 때 DBMS 스키마에 어떤 행위를 할 것인지를 정하는 옵션이다. 해당 옵션이 설정되어있으면, Spring은 EntityScan을 통해 @Entity 어노테이션이 붙은 클래스를 찾고, 해당 클래스의 데이터를 바탕으로 서버 시작 때(hibernate의 SessionFactory가 실행될 때) DDL문을 적용하여 DB에 적용한다.

spring.jpa.hibernate.ddl-auto에는 5가지 옵션이 있으며, 그에 대한 설명은 다음과 같다.

  • none : 아무런 일을 하지않는다.
  • create : SessionFactory가 실행될 때 테이블을 지우고 새로 만든다.
  • create-drop : create와 동일하지만, SessionFactory가 종료될 때 해당 테이블을 drop시킨다.
  • update : SessionFactory가 실행될 때, 엔티티를 검사하고 변경된 스키마에 따라 테이블을 alter한다. 데이터는 유지시킨다.
  • validate : update와 같이 엔티티를 검사하는데, 변경된 스키마가 있다면 에러를 발생시키고 종료한다.

개발 과정에서는 create 혹은 create-drop 옵션을 사용하여 DB를 다루는 일을 쉽게 할 수 있을 것 같다.

profile
날 어떻게 한줄로 소개해~

0개의 댓글