Spring Boot can automatically create the schema (DDL scripts) of your JDBC DataSource or R2DBC ConnectionFactory and initialize its data (DML scripts).
출처: https://docs.spring.io/spring-boot/how-to/data-initialization.html
Spring Boot 프로젝트에서 resources 하위 경로에 schema.sql, data.sql 파일을 작성하면, 해당 파일 내 SQL 쿼리는 스프링 애플리케이션 시작 시 자동으로 실행된다.
실행 순서는 schema.sql -> data.sql 순서로 실행된다.
schema.sql에는 DB 스키마 생성을 위한 DDL을, data.sql에는 초기 데이터 삽입을 위한 DML을 작성하는 것이 약속이다. schema.sql에 DML을 작성해도 실행은 되지만 컨벤션은 지켜주자.
DB 초기화 과정은 application.yml 설정을 통해 커스터마이징 할 수 있다.
아래는 Spring Boot의 디폴트 설정을 명시적으로 나타낸 내용이다. application.yml에 아무 설정을 하지 않았을 때 아래와 같이 동작한다.
spring:
sql:
init:
mode: embedded # embedded DB(ex. h2)를 사용할 때만 실행하겠다는 의미
schema-locations: classpath:schema.sql
data-locations: classpath:data.sql
디폴트 설정으로 되어 있으면, 인메모리 DB가 아닌 외부 DB(ex. MySQL)를 사용하는 경우, schema.sql과 data.sql은 실행되지 않는다.