spring

spring-boot jdbc database 초기화 schema.sql, data.sql

질주하는구 2022. 3. 9. 23:33

spring jdbc를 이용해서 database를 초기화 하는 간단한 방법을 정리 했습니다.

spring boot 버전에 따라 다르기 때문에 버전에 맞춰서 작업 해주면 됩니다.

 

2.4 이하 버전의 경우 src/resource/ 하위에 schema.sql, data.sql 파일이 있는경우 해당 파일이 start시 자동으로

동작 하게 되어 있습니다.

해당 설정이 정상 동작 하지 않는 경우 application.properties 에 spring.datasource.initialization-mode=always

설정을 추가 해주시면 됩니다.(저 설정 기본이 always입니다.)

 

2.5 이상의 경우 .sql파일이 자동으로 실행 되지 않습니다. application.properties 파일에

spring.sql.init.mode=always 설정을 추가 해줘야 정상 동작 하게 됩니다.

 

추가로 2.4 이하버전에 schema.sql파일 없이 data.sql파일만 생성 후 spring.jpa.hibernate.ddl-auto 설정으로

테이블 구성을 하였던 경우 에러가 발생되게 됩니다. 2.5 버전 부터는 jpa가 먼저 실행 되고 hibernate관련

설정이 동작 하기 때문에 테이블 생성 안된 상태로 data를 초기화 하는 문제가 있습니다.

이 경우 spring.jpa.defer-datasource-initialization=true 설정을 추가 해주면 동작이 가능 합니다.

아래의 링크에 자세한 내용이 나와 있지만 jpa와 hibernate를 혼용 하는건 권장 하지 않는다고 하니 참고 하시면

될거 같습니다.

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

 

반응형