DB를 연동하여 프로젝트를 할 때 테스트 용 SQL을 작성하여 서버 실행마다 DB에 샘플 데이터를 저장하고 싶으면 어떻게 할까? 일일히 서버를 실행하고 작성한 SQL을 실행하는 것은 매우 번거로울 것이다.
먼저 application.properties
에 다음을 추가하자.
spring.sql.init.mode=always
이후, 서버 실행마다 실행하고 SQL 파일을 src/resources/
단계에 추가하자. 파일 명은 data.sql
으로 설정하는 것이 관례이다.
이렇게 세팅을 마치고 서버를 실행 했는데 오류가 발생했다.
이유는 generate-ddl
옵션을 통해 테이블을 만드는 과정과 테이블에 데이터를 추가하는 SQL의 작동 순서때문이였다. 내가 바라는 것은 테이블이 생성된 후 데이터를 INSERT
하는 것이였는데, 작동 순서가 반대로 적용됬다.
application.properties
에 다음 문장을 추가하자.
spring.jpa.defer-datasource-initialization=true
위 옵션이 있는 경우 다음 순서로 동작하게 된다.
Hibernate
의 ddl-auto
data.sql
실행테스트를 할 때는 ddl-auto
를 통해 테이블 생성 후 데이터를 삽입하는 것이 일반적이라 생각하여 이 옵션 설정은 필수라 생각된다. 또한, Spring 덕분에 서버 실행마다 특정 SQL을 실행할 수 있었다.