스프링부트에서 DB를 사용할 경우, 대개 Spring Daat JPA
를 사용하여 DB와 상호작용한다.JPA
를 사용할 경우, 프로젝트를 시작할때, 프로젝트에 정의된 Entity에 따라서 자동으로 DB를 초기화해주는 상황을 한번쯤 본 적 있을것이다. 해당 초기화를 잘 사용하면 DB 테이블을 직접 생성하지 않고도 편리하게 테이블을 사용할 수 있다.
이와같은 초기화 방법에 대해 스프링 부트 공식 문서에서는 설명하고 있다.
본 글에서는 해당 내용에 대해 정리해보고자 한다.
DB 초기화
스프링부트에서는 DB를 초기화 하기 위한 두가지 방법을 제공한다.
spring.jpa.generate-ddl (boolean)
: DB 초기화 기능을 끄고 킬수 있다.spring.jpa.hibernate.ddl-auto (enum)
: 위의generate-ddl
보다 좀 더 구체적으로 설정할 수 있다.
spring.jpa.hibernate.ddl-auth
해당 방법으로 초기화 설정시, 아래 5가지 옵션을 줄 수 있다.
none
: DB 초기화를 설정하지 않는다, 기본값이다.validate
: DB 테이블을 수정하지 않으면서, 프로젝트의 엔티티와 DB 테이블이 매핑되는지 검사한다. 만약 둘이 일치하지 않으면 예외가 발생한다.update
: 프로젝트의 엔티티를 참고하여, DB의 테이블을 초기화한다. 만약 중복되는 기존의 테이블이 존재할경우, 테이블을 수정한다.create
: 프로젝트의 엔티티를 참고하여, DB의 테이블을 초기화한다. 만약 중복되는 기존의 테이블이 존재할경우, 테이블을 삭제 후 다시 생성한다.create-drop
: 위create
와 동일하게 테이블을 생성한다. 프로젝트 종료 후에는 테이블을 다시 삭제한다.
import.sql
만약 spring.jpa.hibernate.ddl-auth
설정에서 create
또는 create-drop
옵션이 주어진 경우 프로젝트 루트 경로에 있는 import.sql
파일이 실행된다.
해당 파일을 사용하여 DB 테이블 생성과 동시에 초기 데이터 삽입을 할 수 있다.
스프링부트에서 최상단 경로는 resource
폴더이므로, 해당 경로에 import.sql
파일 생성 후 데이터 삽입 쿼리를 작성하면, DB 초기값을 설정 할 수 있다.
'Back End > Spring && Spring Boot' 카테고리의 다른 글
[Spring Security] UsernamePasswordAuthenticationFilter 내부 동작 파해치기 (0) | 2024.07.05 |
---|---|
[Spring boot / h2] Embedded VS In-Memory VS Server (0) | 2024.06.26 |
JWT 개념과 구조, 작동 방식 (0) | 2024.06.22 |
[Spring Security] 현재 로그인된 유저 정보 얻기 - @AuthenticationPrincipal (0) | 2024.06.18 |
[JPA] Entity 생성 시간 자동 기록하기 (1) | 2024.06.15 |