-
[Spring JPA] data.sql 동작방식 변경, hibernate_sequence not found 해결법Back End/Spring Data JPA 2021. 10. 19. 20:27
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 자체가 없을 것임...
728x90'Back End > Spring Data JPA' 카테고리의 다른 글
[Spring JPA] 쿼리메소드, JPQL, NativeQuery (@Query) (0) 2021.11.01 [Spring JPA] Repository Query Keywords (0) 2021.10.27 [Spring JPA] DB transaction isolation(격리수준) 개념 및 사용방법 (0) 2021.10.27 [Spring JPA] Spring Data JPA Annotation & JPA Event (0) 2021.10.22 [Spring JPA] JPA, Hibernate, Spring Data, ORM 의 개념 (0) 2021.10.19