[JPA] SQL 스크립트를 활용한 데이터베이스 초기화

개발자 P군·2024년 12월 10일
post-thumbnail

이번에 JPA를 사용하면서 SQL 스크립트로 데이터베이스를 초기화하는 방법을 정리했습니다.


1. schema.sql 작성

schema.sql 의 역할은 데이터베이스 테이블과 인덱스 등 DDL 작업을 수행합니다. 그리고 기본 위치는 src/main/resources에 작성해주시면 됩니다.

DROP TABLE IF EXISTS members;

CREATE TABLE members (
    id BIGINT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    email VARCHAR(255) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE INDEX idx_email ON members(email);

2. data.sql 작성

data.sql의 역할은 초기 데이터를 삽입하는 DML 작업을 수행합니다. 기본 위치는 schema.sql과 같이 src/main/resources에 작성해주시면 됩니다.

INSERT INTO members (name, email) VALUES ('John Doe', 'john.doe@example.com');
INSERT INTO members (name, email) VALUES ('Jane Smith', 'jane.smith@example.com');

3. application.yml 설정

SQL 스크립트를 실행하도록 설정합니다. schema.sql이 먼저 실행되고, data.sql이 이후 실행됩니다.

spring:
  sql:
    init:
      mode: always # SQL 스크립트 실행 모드 설정
      schema-locations: classpath:db/schema.sql # schema 파일 경로 (필요시 변경)
      data-locations: classpath:db/data.sql # data 파일 경로 (필요시 변경)
  jpa:
    hibernate:
      ddl-auto: none # DDL 작업을 SQL 스크립트로 처리할 경우 'none'으로 설정

주의사항

  • spring.jpa.hibernate.ddl-autonone으로 설정해야 SQL 스크립트가 정상적으로 실행됩니다.
  • 기본 경로(classpath:/schema.sql, classpath:/data.sql)를 사용하지 않는 경우, schema-locationsdata-locations를 통해 별도로 경로를 지정합니다.
profile
문제를 발견하고 해결하는 과정을 통해 얻은 새로운 지식을 공유하고자 합니다.

0개의 댓글