[Spring JPA] data.sql 동작방식 변경, hibernate_sequence not found 해결법
Spring 강의를 들으며 공부하시는 분들 중, 해당 강의가 Spring boot 2.5 이전버전 기준으로 진행되는 강의일 경우
call next value for hibernate_sequence; 를 data.sql 에 입력했다가
잘못된 syntax 어쩌구 'hibernate_sequence not found' 를 목격하게 될 것이다.
해당 에러문구를 읽어보면 분명 해당명령어를 찾지못해 발생하는 건데
dependencies 에 따로 hibernate를 추가해야되나 싶었지만,
검색해보니 hibernate는 spring-data-jpa 안에 이미 들어있었다.
call next value for hibernate_sequence; 가 문제인가 싶어 지워도
오류가 뜰 것이다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
create table 부터 초기설정에 필요한 sql문들을
data.sql 에 입력하지 않았다면 무조건 오류메세지를 보게될 것이다...
왜 강의에서는 잘되는데 나는 테이블이 없다고 경고를 날릴까..
내가 일일이 sql문으로 테이블을 생성하면 jpa가 하는 일은 도대체 뭔데...
if문으로 테이블 없으면 생성하게 라이브러리를 만들어놨어야하는거 아닌가.....
생각이 여기까지 미치자 그제서야 버전 차이를 의심했다.
* 아래는 Spring Boot 공식문서이다.

그렇다....
버전이 2.4 -> 2.5로 변경될 때 실행순서가 바뀌었다...
2.4 버전까지는 Hibernate 초기화 -> data.sql script 실행이었으나,
2.5 버전부터는 data.sql script 실행 -> Hibernate 초기화라... Hibernate 객체를 찾지 못한 것이다.
버전을 낮추고 돌려보면 잘만 돌아간다.
역시 create table 안해도,,, 돌아가게끔 구현해놓으셨군요 선배님들...
ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ
data.sql 을 먼저 작성해서 테스트하고 싶으면, 버전을 낮추거나 가이드에 따라
spring.jpa.defer-datasource-initialization=true 로 설정하고 하면 될 것 같다.
연습만 간단히하고 최신버전에 맞춰서 jpa 를 활용하자..!
p.s) 혹시 버전 낮추는 법을 모르는 분들을 위해 !!!
>>> build.gradle 파일의 plugin 에 보면
id 'org.springframework.boot' version '2.x.x' 가 있을텐데
대충 2.4.3 으로 맞춰서 gradle 을 restart 시켜주면 된다..!
p.s) 혹시 가이드에 적힌 설정을 어디에 해야할지 모르겠다는 분들을 위해 !!!
>>> resources > application.properties 또는 application.yml 에서
spring.jpa.defer-datasource-initialization=true 를 추가해주면된다...!
(yml 은 물론 yml 문법대로 작성)
p.s) @GeneratedValue(strategy=GenerationType.SEQUENCE) 가 아니면
hibernate_sequence 자체가 없을 것임...