스프링/JPA

[JPA] dataSourceScriptDatabaseInitializer 빈 생성 오류

imcoding 2022. 11. 15. 17:51

 

 

강의듣다가 해당 오류 발생..

 

공식 문서 내용

Hibernate and data.sql

By default, data.sql scripts are now run before Hibernate is initialized.
This aligns the behavior of basic script-based initialization with that of Flyway and Liquibase. If you want to use data.sql to populate a schema created by Hibernate, set spring.jpa.defer-datasource-initialization to true. While mixing database initialization technologies is not recommended, this will also allow you to use a schema.sql script to build upon a Hibernate-created schema before it’s populated via data.sql.

 

data.sql 파일의 쿼리문이 실행되면서 발생한 오류였다.

 

스프링부트 2.5 버전 부터는 hibernate 초기화 이전에 data.sql 파일이 실행된다고 한다.

 

강조한 부분을 보면,

Hibernate에 의해 생성된 스키마에 sql파일로 데이터를 넣고자 한다면 application.property/yml 파일에 아래 코드를 추가해야 한다.

defer-datasource-initialization: true

 

이후 어플을 다시 실행하면 db에 값이 잘 들어가고 정상 동작한다.