스프링 초기 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
파일을 읽는다.