spring-boot init sql (schema.sql) 이란?

schema.sql (data.sql) 의 용도

어플리케이션을 로딩 시 쿼리 문을 실행하고 싶을 경우가 있다. test용도로 어플리케이션을 띄우거나 초기에 디비에 쿼리문을 날려야 할 때 아주 유용한 schema.sql이 있다. schema.sql 이나 data.sql 을 자동으로 실행하게 된다.
(암묵적으로 schema.sql은 ddl, data.sql은 dml으로 작성한다. )

사용시 주의사항

spring boot 2.4 이하 버전의 경우 ** src/resource/ ** 하위에 schema.sql 이나 data.sql 파일이 있는 경우 자동 실행되게 된다. (실행되지 않을 경우 spring.datasource.initialization-mode=always 세팅)
spring boot 2.5 이상 버전의 경우 자동으로 실행되지 않아 spring.sql.init.mode=always 프로퍼티 값을 입력해주어야 한다.

  • JPA와 함께 사용하는 경우 Hibernate의 ddl-auto 기능과 함께 schema.sql을 실행하면 schema.sql이 먼저 실행되고 Hibernate의 기능이 수행된다. 이 순서를 바꾸고 싶으면 spring.jpa.defer-datasource-initialization=true 옵션을 주면 된다. (schema.sql로만 설정하고 싶으면 spring.jpa.hibernate.ddl-auto=none 을 주면 된다.)

Reference

https://www.baeldung.com/spring-boot-data-sql-and-schema-sql

댓글남기기