Spring Core/자질구래

[spring]SQL script를 활용한 DB 초기화

은서파 2022. 12. 3. 18:04

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