인프런 커뮤니티 질문&답변

덩더러러쿨님의 프로필 이미지
덩더러러쿨

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

JPA와 DB 설정, 동작확인

h2 데이터베이스 설치 대신 embedded를 이용하려고 하는데요

해결된 질문

작성

·

420

0

굳이 h2 DB를 설치하고 싶지 않아 스프링부트에서 제공하는 인메모리 h2 DB를 사용하고 싶은데, 전 강의(h2 DB 설치)와 본 강의를 따라하려고 하면 h2 DB 커넥션 오류가 발생합니다.

'org.h2.jdbc.JdbcSQLNonTransientConnectionException: Connection is broken: "java.net.SocketTimeoutException: connect timed out: localhost" [90067-199] ...'

그래서 저는 구글링하며 다른 방법을 찾아다니며, application.yml 에서
url: jdbc:h2:tcp://localhost/~/jpashop 대신 
url: jdbc:h2:mem:jpashop를 작성했습니다.

JpashopApplication에서 애플리케이션을 Run시켰더니 다음과 같이 h2 DB 서버에 정상적으로 접속됬습니다.

그런데 다른 부분에서 문제가 발생한 것이,
테스트 애플리케이션(MemberRepositoryTest)에서 Run을 하면 스스로 멈춰버립니다..


말그대로 저 시점에서 오류없이 잠깐 사이 첫번째 이미지에서 두번째 이미지로 혼자서 멈춰버립니다.

때문에 본 강의의 테스트 환경에서 h2 데이터베이스 서버에 접속할 수가 없어 데이터(memberA)가 삽입이 되었는지 확인할 수가 없었습니다.

나름 제가 가진 상황을 자세히 작성하려다 보니 글이 길어졌네요
멘토님께서 제가 작성한 코드를 한번 살펴봐주시면 매우 감사하겠습니다ㅜ

답변 5

1

아 본 강의속 멘토님 화면을 보니 stop버튼이 활성화가 되어있어서 저만 다른 현상인 줄 알았네요;
빠른 답변 감사합니다!

0

김영한님의 프로필 이미지
김영한
지식공유자

ㅎㅎ 네^^

0

김영한님의 프로필 이미지
김영한
지식공유자

방금 테스트를 해보았는데 잘 수행됩니다.

추가로 멈춘다는 뜻이 뭘까요?

테스트 케이스는 녹색불이 나오고 종료되면 잘 성공한 것입니다^^!

테스트는 웹 서버를 실행해서 계속 띄워두는게 아니거든요.

추가로 데이터베이스에 데이터가 들어가 있는 것을 보고 싶으시면 다음과 같이 @Commit 을 하나 더 넣어주시면 됩니다.

@Test
@Transactional
@Commit
public void testMember() throws Exception {

0

멘토님 말씀대로 첨부된 h2(zip)를 다운받아서 하고 있습니다. 그런데도 테스트 환경에서 혼자서 멈추는 현상은 여전합니다ㅜㅜ

말씀하신 대로 기존 강의를 따른 h2 설치 후 정상적으로 동작하는 과정을 확인 후 다시 commit 했습니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 덩더러러쿨님

이런 부분 때문에 h2 데이터베이스를 정확하게 설치하셔야 합니다. 그래야 데이터베이스에 저장된 결과를 눈으로 확인할 수 있습니다. 메모리 모드로 하면, 서로 연동도 안되고, 애플리케이션 종료 시점에 결과가 모두 사라져버립니다.

강의 내용에 나온데로 h2 데이터베이스를 설치하시고, 다시 진행해주시겠어요?

그리고 커넥션 오류가 발생하더라도 h2 데이터베이스를 정식으로 설치하고, 실행하신 다음에 진행해봐주세요. 그리고 오류가 발생하더라도 h2 데이터베이스를 정상적으로 사용하는 버전으로 commit해주시면 어떤 문제가 있는제 확인해볼게요.

감사합니다.

덩더러러쿨님의 프로필 이미지
덩더러러쿨

작성한 질문수

질문하기