본문 바로가기
개발/Spring

Spring Boot + JPA + H2

by 설이주인 2022. 12. 26.

로컬에서 개발을 진행할때 데이터베이스에 임시로 데이터를 넣고 진행해야하는 상황이 자주 발생한다.

 

Spring Application 실행 시 자동으로 기초 데이터를 넣을 수 있게 data.sql을 작성해서 넣어보자

 

Gradle

 

Entity:

 

일반적으로 실행시 발생하는 에러이다.

TB_USER이 생성 되기 전에 data.sql의 insert 문장이 실행 된것 같다

 

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.5-Release-Notes

 

GitHub - spring-projects/spring-boot: Spring Boot

Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.

github.com

 

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.

 

Spring Release Note를 확인하면 위의 설명을 확인할 수 있다.

 

application.yml에 설정을 추가해주자

 

 

잘 작동한다.