인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

강낭콩님의 프로필 이미지
강낭콩

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 도메인과 리포지토리 만들기

h2 설정 관련 질문이 있습니다.

작성

·

263

0

안녕하세요. 영한님 JPA책을 구매해서 간단한 웹앱 만들기를 하고 있는데요, h2를 인텔리제이창 우측 탭부분에서 h2 url을 이용해서 연동을 시켜두었습니다. 현재는 jpa연습중이므로 간단한 회원엔티티와 회원리파지토리만 만들어서 crud를 연습하려고 하는데요, 회원가입 테스트는 통과되는데 결과값이 실제 h2에 반영이 안돼서 질문드립니다... 이 영상과는 거리가 다소 있지만.... 너무 답답한 마음에 질문드립니다.... 아직 여건이 안돼서 영한님 강의는 구매를 못했지만 꼭 구매할게요!

인텔리제이에서 h2를 연동할 때는 잘 됩니다. 연결 테스트도 통과됩니다. 또 제가 h2 ddl설정을 create로 주었는데요, 회원가입테스트를 실행하면 drop과 create쿼리는 날라가는데, h2 db에 테이블이 생성되지 않고 persist에 의한 Insert쿼리가 날아가지가 않습니다. @Transactional을 달았는데도 커밋이 되지 않는 것이 이해가 되지 않아서요. 테스트에 @Commit을 달아서 강제하면 insert쿼리가 날아가기는 합니다만, 디비에는 아무 값도 저장되지 않습니다. 새로고침을 해보아도 그대로이네요... 이 문제는 어떤 방식으로 접근해야 할지가 너무 궁금합니다..... 

h2는 homebrew로 설치하였고 버전은 1.4.200입니다. db 연결시에 특별히 오류가 발생하지는 않았습니다. 

https://github.com/yoonjoynow/blog/tree/master/src/main/java/me/yoon/blog

위 리파지토리에 현재 진행중인 코드 커밋해두었습니다 ㅠㅠ 

답변 1

0

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

안녕하세요. 동환님

테스트 케이스에서 설정한 @Transactional은 항상 롤백을 시도합니다.

따라서 @Commit을 추가해주어야 합니다.

추가로 @DataJpaTest는 기본 동작이 메모리에서만 H2 데이터베이스를 실행합니다. 따라서 이 부분을 @SpringBootTest로 변경해야 합니다.

appliation.properteis부분도 이렇게 사용하면 문제가 될 수 있습니다.

spring.datasource.url=jdbc:h2:~/happy

본 강의에서 나온 H2 데이터베이스 설치 부분을 참고해서 다시 설정해주세요.

감사합니다.

강낭콩님의 프로필 이미지
강낭콩

작성한 질문수

질문하기