본문 바로가기
TIL(Today I Learned)

[Spring] data.sql을 이용한 테스트 데이터 추가하기.. (스프링 부트 2.7.8 버전)

by kkkdh 2023. 2. 22.
728x90

Spring을 이용해서 jwt 관련 개념을 공부하다가 맞딱뜨린 문제를 해결한 과정을 기록하려 합니다..

 

대략 user, authority, user_authority 세 개의 entity를 JPA를 이용해 관리하는 애플리케이션이고, user, authority가 다대다 관계로 매핑되는 예제를 구현하고 있었습니다.

대략 이런 sql 파일입니다..

그러던중 data.sql을 resources 폴더에 넣어 초기화 과정에서 테스트 데이터를 넣는 과정을 실행하는데..

아무리 h2 database를 조회해도 데이터가 추가되지 않았습니다..

 

해결책부터 말하자면, application.yaml 설정 파일에 다음 두 가지를 추가해서 해결했습니다.

  • sql.init.mode
  • jpa.defer-datasource-initialization

 

이런 문제가 발생한 이유는 Spring Boot 2.5버전 이후부터 hibernate 초기화 이전data.sql이 실행되도록 바뀌어서, hibernate에 의한 스키마 생성 과정이 진행되며, 추가된 데이터가 삭제되기 때문인 것으로 추측됩니다..

 

그래서 두 가지 설정을 통해

  • sql.init.mode: 기본값은 embedded (임베디드 데이터베이스 대상), always로 변경해 모든 데이터베이스로 초기화 대상을 변경
  • jpa.defer-datasource-initialization: true로 설정해서 hibernate 초기화 이후 data.sql가 실행되도록 변경한다.

이렇게 설정을 마치고

테스트 데이터 추가 성공!!

테스트 데이터를 추가할 수 있었습니다..😀😀

728x90

댓글