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

cksgur님의 프로필 이미지

작성한 질문수

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

순수 JDBC

DB관련

해결된 질문

작성

·

443

1

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
안녕하세요

여기서 import org.springframework.jdbc.datasource.DataSourceUtils;

jdbc부분에 빨간줄이 생겨서 다른질문자분들이 올려주신걸 보고 어찌어찌 해결했습니다. 그런데 HelloSpringApplication을 실행할때마다 회원목록이 비어있습니다. 그리고 회원등록을 하고나서 sql문을 날리면 DB에 들어간 회원이 없습니다..

어디가 연결이 잘못된건지 잘 모르겠네요..

 

 

그리고 H2 실행할때 다음실행부터는 저 url부분에

jdbc:h2:tcp://localhost/~/test

이런식으로 넣어서 들어가라고 하셨는데 그러면 오류가 납니다.. 저 스크린샷처럼 들어가야 연결이 되는데 application.properties에 어떤 url을 써야 하나요?

 

답변 3

2

프로젝트 코드 확인해보았습니다.

다음 내용을 수정해보시고, 해결이 안될 경우 댓글남겨주세요.

 

(1)application.properties 파일

spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa

.

(2)SpringConfig 클래스

수정전)

return new MemberService(new MemoryMemberRepository());

수정후)

return new MemberService(memberRepository());

 

(3) JdbcMemberRepository 클래스

수정전) 29번째 줄

conn = pstmt.getConnection();

수정후)

conn = getConnection();
cksgur님의 프로필 이미지
cksgur
질문자

imageh2콘솔에서 jdbc:h2:tcp://localhost/~/test 이렇게 입력하면 위에 메세지가 뜹니다.

그리고 HelloSpringApplication실행후 localhost창에 들어간 다음 회원목록 창을 누르면

image이런식으로 뜨네요

https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.3ryn0qha48vi

(1) 해당 링크의 해결방안2를 참고하여 test.mv.db파일을 C:\USERS\계정명 폴더에 생성해주세요.

그리고 h2 를 실행한 후

 

image

(2) h2에서도 동일하게 application.properties의 URL을 적용해주세요.

(3) 강의를 참고하여 ddl.SQL 파일의 내용을 h2 콘솔에 작성해서 MEMBER 테이블을 생성해주세요

.

중간에 막히는 부분이 있다면 댓글 남겨주신 것처럼 캡쳐화면을 제공해주시면 추가적인 도움 드리도록하겠습니다.

cksgur님의 프로필 이미지
cksgur
질문자

맥을 사용중인데 맥은 test.mv.db를 어디에 위치시켜야 하는지 알 수 있을까요?

아, 맥을 사용중이시군요.

터미널을 열었을 때의 기본 경로입니다.

Users/계정명 여기에서 진행하시면 되고, 명령어 한개만 입력해주세요.

touch test.mv.db

그리고 h2를 열어서 확인해주세요

cksgur님의 프로필 이미지
cksgur
질문자

https://drive.google.com/drive/folders/1K5KRTOmuPST5bLoUpSfJe4yoAXUrB3zo?usp=sharing

 

알려주신 방식대로 h2콘솔 열고 주소 복사해서 넣으면 똑같이 connection is broken이 뜨고 url입력부분이 알아서 처음url로 돌아갑니다..

그리고 HelloSpringApplication 실행 후localhost창 들어가면 회원등록 무르면

image이렇게 뜹니다..

추가로 올리신 코드를 실행했을 때 정상 실행되는것으로 보아 문제가 없는 것 같습니다.

기타 환경 문제로 예상이 되는데요. 다음 링크를 보시면

https://velog.io/@adorableco/Springh2-Mac-M1-Connection-refused-by-localhost-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0

맥을 사용하는 점과 오류 메시지가 동일한 것으로 확인됩니다.

확인해보시겠어요?

해결이 안될 경우 h2를 설치하신 경로를 댓글 남겨주세요.

.

추가로 ,오류 메시지 전문을 확인해봐야 할 것 같습니다.

 

에러메시지 전체를 복사해서 댓글로 남겨주시겠어요?

전체 복사-붙여넣기가 길이제한으로 불가하다면

인텔리제이 콘솔창을 클릭한 후 exception을 검색(command+f)하면 몇몇 개가 검색이 될텐데요.

그 부분을 중점으로 남겨주시겠어요?

오류 메시지에서 중요한 부분은 어떤 Exception이 발생했는지와

caused by ~ 로 어떤 원인에 의해 발생했는지 입니다. 이 부분을 확인할 예정이므로 이 부분을 중점으로 남겨주시면 확인에 도움이 될 것 같습니다.

image

cksgur님의 프로필 이미지
cksgur
질문자

m1맥인데 터미널에서 h2 -web이 아니라 ```bash h2 -tcp -web -pg ``` 이런식으로 입력하니까 db에 잘 저장되고 localhost창에서 회원목록도 잘 보입니디.. 감사합니다ㅠㅠ

0

안녕하세요. cksgur님, 공식 서포터즈 OMG입니다.

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

image링크 있는 사용자가 열어볼 수 있도록 권한 부여를 확인해주세요

허용은 됐는데, 확인 가능한 코드가 없네요

image

image

시작 프로젝트 코드만 올린게 맞을까요?

cksgur님의 프로필 이미지
cksgur
질문자

https://drive.google.com/file/d/1fnVwHy5Qc3zPjRO4uA8C6YaXbqjqTcOZ/view?usp=drive_link

 

제대로 압축하고 올린 것 같은데 죄송합니다..

0

안녕하세요, 인프런 AI 인턴입니다.

cksgur 님, JDBC 설정 및 H2 데이터베이스 연결 문제로 곤란을 겪고 계신 것 같습니다. 첫 번째 이미지에서 언급하신 org.springframework.jdbc.datasource.DataSourceUtils 관련 이슈 해결을 축하드립니다. 다음으로, 회원 등록 후 데이터베이스에 데이터가 보이지 않는 문제와, JDBC URL 설정 관련하여 어떻게 해야 할지 고민이시군요.

데이터가 데이터베이스에 보이지 않는 경우, 아마도 어플리케이션과 데이터베이스 간의 연결 설정에 문제가 있을 수 있습니다. 그리고 H2 데이터베이스를 처음 실행할 때와 이후 연결 설정 구성에 차이가 있을 수 있음을 주목해야 합니다.

H2 데이터베이스 JDBC URL 설정

H2 데이터베이스를 사용할 때, 처음 실행할 때는 jdbc:h2:~/test와 같은 형식을 사용하여 데이터베이스 파일을 생성합니다. 이후 데이터베이스에 접근할 때는 서버 모드를 사용하는 경우가 많으므로, 이때는 jdbc:h2:tcp://localhost/~/test와 같이 접근 URL을 변경해야 합니다.

회원 데이터가 데이터베이스에 보이지 않는 문제는 여러 원인에 의해 발생할 수 있습니다. application.properties 파일의 데이터베이스 URL 설정, 데이터베이스 접근 권한, 트랜잭션 설정 등 다양한 설정을 점검해야 할 필요가 있습니다.

관련 질문 링크

여기에 몇 가지 유사한 질문에 대한 답변 링크를 제공합니다. 이들 링크를 통해 cksgur 님의 문제를 해결하는 데 도움이 될 수 있습니다:

  • h2데이터베이스에서 JDBC URL 연결

    • 이 질문에서는 H2 데이터베이스를 처음 설정하고 서버 모드로 전환할 때 발생할 수 있는 연결 문제에 대한 해결 방안을 제공합니다.
  • H2 연결시 JDBC URL

    • 여기서는 JDBC URL에 대한 초기 설정 이후 서버 모드로 접근할 때 마주칠 수 있는 문제와 그 해결책에 관해 다루고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cksgur님의 프로필 이미지

작성한 질문수

질문하기