저번 시간에 회원 가입과 회원 조회 기능을 다 만들었고
테스트하는 과정에서 이렇게 세 명의 회원을 가입시켰다.
제대로 된 데이터베이스의 필요성
그런데! 우리가 지금 쓰고 있는 저장소가 어떻게 생겼는가?
이렇게 리포지토리 내부의 Map 객체에다가 저장하도록 되어있다.
그리고 리포지토리 객체는 프로그램을 새로 돌릴 때마다 매번 새로운 객체(bean)으로 만들어진다.
따라서,
서버를 껐다 켤 때마다
모든 데이터가 날아간다!
다시 돌려보면 진짜로 날아간다.
이제는 서버를 껐다 켜도 날아가지 않는 제대로 된 데이터베이스를 마련할 때가 되었다.
H2 데이터베이스 설치
이번 시간에는 H2 데이터베이스를 설치한다.
되게 단순하고, 가볍고, 웹으로 콘솔을 제공하기 때문에 편하며, 교육용으로도 좋은 데이터베이스라고 한다.
여기 들어가서 1.4.200 버전 설치 파일을 다운로드받아서 설치했다.
다운받은 다음 H2 콘솔을 실행시키면 강사님과 동일한 이런 화면이 뜬다.
아무것도 건드리지 않고 등록을 누르면
이런 화면이 뜬다.
그리고 내 컴퓨터에는 이런 데이터베이스 파일이 만들어져있다.
내 사용자 디렉토리의 완전 베이스에 생겨있다.
이 파일이 생겨있는 것을 확인했다면
다시 이 화면으로 돌아온 다음에
강의자료에 있는 텍스트를 복사해서
여기에 복붙한 뒤 다시 연결을 눌러줘야 한다.
최초 연결 시에만 저 파일을 생성하기 위해 jdbc:h2~/test 로 연결한다고 한다.
만약 데이터베이스에 문제가 생겨서 리셋하고 싶다면
이놈을 삭제한 뒤에, H2 서버를 아예 꺼버리고
여기서부터 다시 해주면 된다고 한다.
이러면 데이터베이스가 완전히 초기화된다.
Member 테이블 새로 만들기
학교에서 데이터베이스 강의를 들을 때 배웠듯이, SQL에서 데이터는 테이블에 저장된다!
회원 정보를 저장하기 위한 Member 테이블을 하나 새로 만들자.
여기 이렇게 적어주자. 내용은 강의자료에 나와있으니 복붙하면 된다.
내용을 살펴보자면,
가장 첫줄은 기존에 동명의 테이블이 존재할 경우를 대비한 drop 명령문이다. Member 데이터에게 의존하고 있는 놈들도 도미노처럼 싹 지우게 되어있다. 우리는 깨끗한 새 데이터베이스를 다루고 있으므로 사실은 없어도 되는 문장이다.
테이블의 구성요소를 보면, 큰 정수 타입인 id와 문자열(최대길이 255) 타입인 name이 있으며
id가 지정되지 않은 채 데이터베이스에 저장이 시도되었다면 데이터베이스가 자체적으로 고유의 id값을 생성하도록 되어있다. (넷째 줄) 이것은 우리가 지금까지 써온 구현체에도 들어있는 기능이다. 그걸 똑같이 여기에도 만들어둔 것이다.
그리고 id는 각 데이터를 구분하는 primary key로 지정되었다 (여섯째 줄)
실행을 눌러주면
drop이 실행되었고
create가 실행되었다는 내용이 뜬다.
Member 테이블의 내용 조회하기
데이터베이스 수업에서 배웠던 것과 똑같다.
이렇게 쿼리를 이용해 조회할 수 있다.
이 쿼리를 적기 귀찮다면
SQL 입력창을 완전히 비운 뒤 왼쪽 디렉토리 목록에서 MEMBER를 클릭하면
Member의 모든 내용물을 조회하는 쿼리가 자동으로 작성된다.
이렇게 클릭 한 번만에 작성된다.
SQL 창에다가 select, insert 문 등 다양한 쿼리문을 입력하여 데이터를 넣고 빼고 변경하고 조회할 수 있다.
사용한 SQL 쿼리 관리
강사님께서는 프로젝트 디렉토리 안에 따로 파일을 만들어서
프로젝트를 위해 사용한 중요 SQL 쿼리를 관리한다고 한다.
이렇게 sql 디렉토리를 새로 만들고 그 안에 ddl.sql이라는 파일을 생성한 뒤 내용을 채워준다.
이렇게 하면 본인이 나중에 코드를 까보거나 깃헙 등에서 다른 사람이 코드를 살펴볼 때
DB를 파악하는 데 도움이 된다.
다음 시간에는 H2가 제공하는 편리한 웹 콘솔을 쓰지 않고
프로젝트에서 직접 jdbc로 DB를 다루는 법을 알아볼 것이다.
'스프링 공부 > 인프런 김영한 스프링 입문 노트정리' 카테고리의 다른 글
6-3. 스프링 통합 테스트 (0) | 2022.07.31 |
---|---|
6-2. 순수 JDBC (0) | 2022.07.30 |
5-3. 회원 웹 기능 - 조회 (0) | 2022.07.30 |
5-2. 회원 웹 기능 - 등록 (0) | 2022.07.30 |
5-1. 회원 웹 기능 - 홈 화면 추가 (0) | 2022.07.30 |