Spring을 이용해서 샘플 프로젝트를 만들 때 매번 DB를 초기화하는게 상당히 귀찮은데 이런 경우 초기화 스크립트를 이용하면 아주 쉽게 문제를 해결할 수 있다.
schema.sql과 data.sql
초기화 파일 준비
먼저 두 개의 초기화 파일을 resoures/init_data 경로에 위치시키자.
첫번 째 초기화 파일은 db의 구조를 담당하는 schema 파일이다.
drop table todo if exists ;
create table todo(
id number primary key auto_increment,
content varchar(100) not null,
done char(1) default 'F'
);
다음은 초기 데이터 파일을 설정하는 data.sql이다.
insert into todo (content) values ('study'), ('sleep');
application.yml 설정
다음은 application.yml 에서 spring.sql.init 하위에 관련 설정을 해주면 된다.
크게 신경쓸 항목은 mode, data-locations, schema-locations 3가지이다.
- mode
- always: 모든 데이터베이스를 대상으로 초기화 스크립트를 동작시킨다. 테스트용이 아닌 DB에 대해서 특히 유의 해야 한다.
- embedded: embedded 데이터베이스만 초기화 시킨다. H2등을 테스트 용으로 embedded 모드로 운용하면서 이 모드의 사용을 권장한다.
- never: 초기화를 사용하지 않는다.
- schema-locations, data-locations
- 각각 schema 파일과 data 파일의 위치를 지정한다.
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:tcp://localhost/~/test
username: scott
password:
sql:
init:
mode: always
data-locations:
- classpath:init_data/data.sql
schema-locations:
- classpath:init_data/schema.sql