스프링 초기 DB 스크립트 실행
스프링 애플리케이션 실행 시 초기 테이블 생성 및 데이터 입력이 필요한 경우가 있다.
schema.sql 파일과 data.sql 파일을 작성하여 이를 해결할 수 있다.
schema.sql : 테이블 생성 스크립트
data.sql : 데이터 입력 스크립트
스프링은 기본적으로 임베디드 DB(h2)일 때 classpath 위치(/src/main/resources)에서 위 스크립트 파일을 읽어서 DB를 초기화 한다.
스프링 application.yml 파일을 통해 위 설정을 커스텀 하여 사용할 수 있다.
아래는 커스텀 한 예시이다.
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:testdb
username: sa
password:
h2:
console:
enabled: true
sql:
init:
mode: always
platform: h2
schema-locations: classpath*:db/schema/schema-${spring.sql.init.platform}.sql
data-locations: classpath*:db/data/data-${spring.sql.init.platform}.sql
spring.sql.init.mode 값에는 always, embedded, never 옵션이 있다.
always 옵션은 항상 스크립트를 실행한다.
embedded 옵션은 인메모리 DB 일 때에만 스크립트를 실행한다.
never 옵션은 스크립트를 실행하지 않는다.
spring.sql.init.schema-locations, spring.sql.init.data-locations를 통해 schema.sql, data.sql 스크립트 파일의 위치를 지정할 수 있다.
- 기본적으로
classpath 루트 위치의 schema.sql과 data.sql 파일을 읽는다.