카테고리 없음
Spring Boot - Database Initialization
ryubato
2021. 1. 6. 01:17
Database Initialization
JPA 를 사용하는 경우
- spring.jpa.generate-ddl : (boolean) on, off
- spring.jpa.hibernate.ddl.auto : (enum) none, validate, update, create, create-drop
- spring boot 의 basic sql script 를 사용하는 경우 비활성화 한다.
spring.jpa.hibernate.ddl-auto=none
Hibernate 를 사용하는 경우
- spring.jpa.hibernate.ddl.auto : (enum) none, validate, update, create, create-drop
- spring.jpa.properties.hibernate.hbm2ddl.auto : none (default), create-only, drop, create, create-drop, validate, update
- ddl.auto 가 create, create-drop 인 경우 root classpath 의 import.sql 이 실행 (spring 이 아닌 hiberate 기능)
- hibernate.hbm2ddl.import_files, hibernate.hbm2ddl.import_files_sql_extractor
Basic SQL scripts 를 사용하는 경우
- spring boot 는 root classpath 의 ddl, dml scripts (schema.sql, data.sql) 를 사용하여 schema 를 생성하고 data 를 초기화할 수 있다.
schema-${platform}.sql
,data-${platform}.sql
처럼 db platform 별로 생성해 두고 spring.datasource.platform : hsqldb, h2, oracle, mysql, postgresql ... 를 설정하여 사용할 수도 있다.- 해당 기능은 기본적으로 h2 처럼 embedded datasource 인 경우에만 동작한다. 다른 datasource 에서도 동작하게 하려면
spring.datasource.initialization-mode=always
를 추가한다. - Flyway or Liquibase 같은 database migration tool 을 사용하는 경우에는 schema.sql, data.sql 를 구분하는 것을 추천하지 않고 해당 기능 지원은 제거될 예정이다.