간단한 TEST라서 H2로 데이터 베이스를 끌어와서 TEST를 사용하고 있는데
TABLE을 발견하지 못한다는 ERROR가 발생했다.
분명 person 클래스에 @Entity를 지정해두었는데 계속 table을 못찾았다.
data.sql을 추가하기 전까지는 분명 잘 돌아갔던 test라 당황했다.
구글링해서 이런저런 dependency와 직접 db연동을 해봤는데 실패였다.
원인은 다른 곳에 있었다....
Spring Boot 2.5 Release Notes
"SQL Script DataSource Initialization
지원 schema.sql 또는 data.sql 에 사용되는 근본적인 method가 Spring Boot 2.5에서 다시 설계되었습니다.
DataSource initialization과 관련된 spring.datasource.* properties가 더 이상 지원되지 않고 R2DBC를 통해 액세스 하는 SQL database를 초기화하는 데 사용될 수 있는 새로운 spring.sql.init.* properties를 제공합니다.
schema 및 data initialization에 별도의 자격 증명이 필요한 경우 org.springframework.jdbc.datasource.init.DataSourceInitializer bean을 정의하세요."
" If you want to use data.sql to populate a schema created by Hibernate,
set spring.jpa.defer-datasource-initialization to true. "
기본적으로 data.sql는 Hibernate가 초기화되기 전에 실행된다.
data.sql 을 사용하여 Hibernate에 의해 생성된 schema를 populate 하려면
spring.jpa.defer-datasource-initialization을 true로 설정해야한다.
database initialization을 섞어 쓰는 것을 권장하지 않지만,
data.sql을 통해 populated 되기 전에 schema.sql script를 사용하여
Hibernate 생성 schema를 기반으로 build 할 수 있다.