1️⃣ 개요
인프런 김영한님의 '실전! 스프링 부트와 JPA 활용 1' 편을 듣다가 MemberRepositoryTest 도중 발생했다.
데이터베이스 연결하는데에 문제가 있었는지 한참을 찾아봤다.
처음에 커뮤니티를 다 뒤져봐도 해결이 안되길래 전전긍긍하다가 우연히 발견한 방법을 해결했다. 기분 날아갈듯 진짜?
보니까 나처럼 비슷한 오류가 발생한 사람이 많은 것 같은데 시도했던 몇 가지 해결법을 작성하겠다.
우선 나는 build.gradle 과 application.yml 파일부터 다시 확인해봤다.
2️⃣ 해결 방법
1) build.gradle
[1] dependencies
우선 build.gradle 파일에서 dependencies를 보면 대부분 자동으로 추가됐겠지만, h2 데이터베이스 관련 내용이 없는 경우가 있다.
이 때는 dependencies 내부에 아래 코드를 추가해주면 된다.
runtimeOnly 'com.h2database:h2'
[2] Java, h2 database version
참고로 Spring Boot 3.x 이상 버전을 사용할 경우 Java 17 이상이어야 한다. 이 때 h2 database 는 2.1.214 이상이어야된다고 한다.
또한 javax 패키지가 아닌 jakarta 를 사용해야 한다.
아래 코드는 h2 의 버전을 확인하는 코드이다. 그냥 h2 들어가서 해당 코드 작성 후 run 하면 된다.
SELECT H2VERSION() FROM DUAL;
나는 Java 11 에 h2 2.1.214 사용할 때 오류가 안났다. 아직까지도 버전 관련 문제는 어렵다. (이 부분은 문제가 아니었나보다.)
sourceCompatibility = '11'
위 코드가 build.gradle 에서 Java 의 버전과 일치하는 값으로, 컴파일에 사용되는 JDK 버전이다.
따라서 버전이 안맞을 경우 다시 다운로드를 하거나 서로 맞춰주어야 한다.
2) application.yml
[1] url
만약 h2 버전이 1.4.200인 경우 MVCC=TRUE 가 있다면 오류가 난다. 해당 부분을 지우면 된다.
또한 이전 강의에서 진행한 h2 경로 설정을 확인하고 url 부분에 똑같이 옮겨야 한다.
[2] 띄어쓰기
해당 파일에서는 띄어쓰기가 중요한데, 간혹 띄어쓰기를 잘못하는 사람들이 있다고 한다. 해당 칸수에 맞게 작성했는지 확인하자.
참고로 순서도 중요하다. (강의를 집중해서 잘 보자)
3) H2
[1] 실행 여부 확인
h2 를 먼저 실행시키고 테스트를 진행해야 한다. 나도 처음에 h2 안켜놓고 진행했다가 오류가 계속 떴다.
사실 h2 를 사용한지 얼마 안되었기 때문에 h2 관련 오류는 아직 잘 모르겠다. 찾아보니 대부분 버전 문제, 경로 설정 문제, 파일 관련 문제가 제일 많았다. 만약 강의를 듣는다면 커뮤니티에 해당 오류 관련 내용이 많으니 해당 글을 참고하면 되겠다.
4) Annotation
우선 나는 이 방법으로 해결을 하였다. Member 클래스에 보면 @Id 어노테이션을 사용하였는데, 이놈이 두 가지가 있었다.
처음에 모르고 아무거나 import 하였더니 그게 아니었다.
첫 번째로 JPA 엔티티 객체의 식별자로 사용할 필드에 적용하는, JPA 에서 제공하는 애노테이션이 있다. 바로 이걸 사용해야한다.
두 번째로 Spring 데이터에서 제공하는 애노테이션이 있다. 처음에 이걸 사용했다가 계속 오류가 난 것이다.
import javax.persistence.Id; //성공
import org.springframework.data.annotation.Id; //실패
위 코드에서 첫 번째를 import 하면 된다. 같은 애노테이션이라도 이렇게나 다르다니 억장이 와르르 무너진다.
* JUnit4 와 JUnit5 사용 방법이 조금 다르다고는 하는데 나는 JUnit4를 사용해서 그대로 진행했다. 버전 확인도 한 번 해보시길*
3️⃣ 느낀점
코딩하면서 오류를 만날때면 억장이 무너진다. 근데 또 구글링 열심히해서 해결했을 때 쾌감은 좋다.
아직 강의 다 들으려면 공부할게 산더미인데 벌써 초기단계에 이런 오류를 만나버리다니...후후
그래서 앞으로 금방 해결 못한 오류들은 포스팅하여 나에게도 도움이 되고자 한다.
앞으로 이런 오류 만나도 당황해야겠다!

출처 : 김영한 - 스프링 핵심 원리(기본편), Spring Q&A, 갓구글
1️⃣ 개요
인프런 김영한님의 '실전! 스프링 부트와 JPA 활용 1' 편을 듣다가 MemberRepositoryTest 도중 발생했다.
데이터베이스 연결하는데에 문제가 있었는지 한참을 찾아봤다.
처음에 커뮤니티를 다 뒤져봐도 해결이 안되길래 전전긍긍하다가 우연히 발견한 방법을 해결했다. 기분 날아갈듯 진짜?
보니까 나처럼 비슷한 오류가 발생한 사람이 많은 것 같은데 시도했던 몇 가지 해결법을 작성하겠다.
우선 나는 build.gradle 과 application.yml 파일부터 다시 확인해봤다.
2️⃣ 해결 방법
1) build.gradle
[1] dependencies
우선 build.gradle 파일에서 dependencies를 보면 대부분 자동으로 추가됐겠지만, h2 데이터베이스 관련 내용이 없는 경우가 있다.
이 때는 dependencies 내부에 아래 코드를 추가해주면 된다.
runtimeOnly 'com.h2database:h2'
[2] Java, h2 database version
참고로 Spring Boot 3.x 이상 버전을 사용할 경우 Java 17 이상이어야 한다. 이 때 h2 database 는 2.1.214 이상이어야된다고 한다.
또한 javax 패키지가 아닌 jakarta 를 사용해야 한다.
아래 코드는 h2 의 버전을 확인하는 코드이다. 그냥 h2 들어가서 해당 코드 작성 후 run 하면 된다.
SELECT H2VERSION() FROM DUAL;
나는 Java 11 에 h2 2.1.214 사용할 때 오류가 안났다. 아직까지도 버전 관련 문제는 어렵다. (이 부분은 문제가 아니었나보다.)
sourceCompatibility = '11'
위 코드가 build.gradle 에서 Java 의 버전과 일치하는 값으로, 컴파일에 사용되는 JDK 버전이다.
따라서 버전이 안맞을 경우 다시 다운로드를 하거나 서로 맞춰주어야 한다.
2) application.yml
[1] url
만약 h2 버전이 1.4.200인 경우 MVCC=TRUE 가 있다면 오류가 난다. 해당 부분을 지우면 된다.
또한 이전 강의에서 진행한 h2 경로 설정을 확인하고 url 부분에 똑같이 옮겨야 한다.
[2] 띄어쓰기
해당 파일에서는 띄어쓰기가 중요한데, 간혹 띄어쓰기를 잘못하는 사람들이 있다고 한다. 해당 칸수에 맞게 작성했는지 확인하자.
참고로 순서도 중요하다. (강의를 집중해서 잘 보자)
3) H2
[1] 실행 여부 확인
h2 를 먼저 실행시키고 테스트를 진행해야 한다. 나도 처음에 h2 안켜놓고 진행했다가 오류가 계속 떴다.
사실 h2 를 사용한지 얼마 안되었기 때문에 h2 관련 오류는 아직 잘 모르겠다. 찾아보니 대부분 버전 문제, 경로 설정 문제, 파일 관련 문제가 제일 많았다. 만약 강의를 듣는다면 커뮤니티에 해당 오류 관련 내용이 많으니 해당 글을 참고하면 되겠다.
4) Annotation
우선 나는 이 방법으로 해결을 하였다. Member 클래스에 보면 @Id 어노테이션을 사용하였는데, 이놈이 두 가지가 있었다.
처음에 모르고 아무거나 import 하였더니 그게 아니었다.
첫 번째로 JPA 엔티티 객체의 식별자로 사용할 필드에 적용하는, JPA 에서 제공하는 애노테이션이 있다. 바로 이걸 사용해야한다.
두 번째로 Spring 데이터에서 제공하는 애노테이션이 있다. 처음에 이걸 사용했다가 계속 오류가 난 것이다.
import javax.persistence.Id; //성공
import org.springframework.data.annotation.Id; //실패
위 코드에서 첫 번째를 import 하면 된다. 같은 애노테이션이라도 이렇게나 다르다니 억장이 와르르 무너진다.
* JUnit4 와 JUnit5 사용 방법이 조금 다르다고는 하는데 나는 JUnit4를 사용해서 그대로 진행했다. 버전 확인도 한 번 해보시길*
3️⃣ 느낀점
코딩하면서 오류를 만날때면 억장이 무너진다. 근데 또 구글링 열심히해서 해결했을 때 쾌감은 좋다.
아직 강의 다 들으려면 공부할게 산더미인데 벌써 초기단계에 이런 오류를 만나버리다니...후후
그래서 앞으로 금방 해결 못한 오류들은 포스팅하여 나에게도 도움이 되고자 한다.
앞으로 이런 오류 만나도 당황해야겠다!

출처 : 김영한 - 스프링 핵심 원리(기본편), Spring Q&A, 갓구글