-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
H2 와 웹페이지 연동이 안되는 듯 합니다
24.03.02 13:46 작성 조회수 99
1
순수 JDBC 수업을 들으며 코드를 복붙하였고 클래스리소스 위치도 봤는데 웹페이지에서 H2에 저장된 데이터가 보이지 않습니다
웹페이지에서 보이는 목록입니다
H2에서 보여지는 데이터입니다
application.properties 와 SpringConfig 코드창을 올립니다
스프링부트 3.X 자바는 17버전을 사용하고 있습니다
혹시 몰라 인텔리제이에서 H2를 연동하였는데도 웹페이지에서 DB로 저장이 안되네요 ㅠㅠ
어느 부분을 더 검색해서 조치해야할까요...
답변을 작성해보세요.
1
OMG
2024.03.02
Jisu Shin
질문자2024.03.02
친절한 답변 감사합니다
https://drive.google.com/file/d/1Nywy96fOIkU0kcVsY-X8YgDP5i8H0aeB/view?usp=sharing
1. 문제 영역을 실행할 수 있는 방법
<1> HelloSpringApplication 클래스를 실행합니다
<2> http://localhost:8080/members 로 이동하여 리스트를 확인합니다 (0건이 정상)
<3> H2 console을 통해 spring, spring2 데이터를 추가해줍니다
drop table if exists member CASCADE;
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
insert into member(name) values('spring');
insert into member(name) values('spring2');
SELECT * FROM MEMBER;
<4> 위 쿼리 결과를 통해 데이터 2행이 나온다
2. 문제가 어떻게 나타나는지에 대한 상세한 설명
-> h2 console을 통해 데이터를 넣었는데도 http://localhost:8080/members 로 이동하여 목록을 확인하면 값이 없다
http://localhost:8080/members/new 에서 데이터를 추가했는데도 DB에 값이 들어가지 않는다
확인부탁드립니다
감사합니다
OMG
2024.03.03
프로젝트 코드 확인해보았습니다.
MemberService생성자를 보면, 생성자의 인자로 memberRepository가 아닌, new MemoryMemberRepository로 메모리 데이터 저장소를 사용하고 있습니다.
이로 인해 Jdbc, JdbcTemplate, Jpa등의 DB접근 기술을 사용하더라도 Memory저장소만 고정으로 사용하게됩니다.
정상 동작하게 변경하려면 this.memberRepository = memberRepository;
로 변경하시면 됩니다.
답변 1