스프링 부트 실행 시 DB에 데이터 삽입

작성일

개요

애플리케이션을 실행 할 때 DB에 데이터가 미리 들어가 있으면 편할 때가 있다. 이때 데이터를 넣는 방법에 대해 알아보자.

설정

application.yml 또는 application.properties를 resource 폴더 밑에 두고 아래와 같이 수정한다.

application.yml

spring:
  jpa:
    defer-datasource-initialization: true
  sql:
    init:
      mode: always
  • spring.jpa.defer-datasource-initialization: true
    • spring boot 2.5 버전 이상부터는 data.sql 스크립트는 Hibernate가 초기화되기 전에 실행된다고 한다. data.sql을 사용하여 Hibernate에 의해 생성된 스키마를 채우려면 해당 값을 true로 설정해야 한다.
  • sql.init.mode: always
    • 스크립트 동작 설정
    • 모든 데이터베이스에 SQL 스크립트를 동작시킨다.

스크립트 작성

스크립트는 schema.sql, data.sql로 작성할 수 있는데 암묵적으로 schema.sql은 DDL을 작성하고 data.sql은 DML을 작성한다.

data.sql

INSERT INTO HOUSE_RULE(name) VALUES
    ('반려동물'),
    ('흡연');

이제 애플리케이션을 실행하면 data.sql이 실행되어 DB에 데이터가 자동으로 들어간다.

참고
스프링 릴리즈 노트에서 데이터 초기화 기술을 섞는 것을 추천하지 않는다고 되어있다. 운영 단계에서는 data.sql을 사용하지 말고 개발 단계에서만 사용하자.