새소식

framework/spring

[Spring] 애플리케이션 실행시 DB 테이블 및 데이터 입력

  • -

스프링 초기 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.sqldata.sql 파일을 읽는다.
[Spring] 애플리케이션 실행시 DB 테이블 및 데이터 입력

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.