spring-boot jdbc database 초기화 schema.sql, data.sql
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