인프런 김영한 스프링 입문
섹션 6. 스프링 DB 접근 기술
- H2 데이터베이스 설치
지금까지 해온 것은 메모리에 정보를 다 저장해왔던 것 -> 서버가 내려가면 회원 데이터들 모두 사라짐.
실무에선 모두 DB에 데이터를 저장함.
1. 가볍고 심플한 H2 DB 설치 해볼것.
2. DB 설치 되어있으므로 애플리케이션 서버와 DB를 연결할 것
-> 이 연결 시 필요한 것이 JDBC 기술, 20년 전 개발자들이 했던 것 처럼 순수 JDBC로만 개발해볼 것.
3. 순수 JDBC는 복잡하기에 스프링이 JDBC 탬플릿을 제공, 이를 이용해 애플리케이션에서 DB로 SQL을 편리하게 날릴 수 있음
4. 3보다 더 나아가 SQL 조차도 개발자들이 직접 짜는게 아니라, SQL의 등록 수정 삭제 등 쿼리를 모두 날려줌
-> 'JPA' 기술을 사용하면 객체를 DB에 쿼리 없이 저장할 수 있음.
회원 객체를 이 모든 과정을 거치며 기술을 바꿔 사용해볼 것임.
1. H2 Database
1. 여기를 클릭하여 H2사이트에서 프로그램을 다운로드 한다.
(나는 맥북이라서 All Platforms, 버전은 2.2.224로 받음)
2. 파일 압축을 푼 뒤 터미널에서 해당 위치로 접근하여 아래 명령어들을 입력한다.
cd h2
cd bin
ls
필자는 'Downloads'폴더에 있어서 맨 처음에 'cd Downloads'를 해줬다.
ls로 파일을 확인해보면 'h2.sh'라는 실행 파일을 확인 할 수 있다.
3. 맥북은 최초 실행 시 권한 설정을 위해 아래 코드를 터미널에 입력해준다. (윈도우는 스킵)
chmod 755 h2.sh
4. 파일 실행을 위해 터미널에 아래 코드를 입력해준다.
./h2.sh //맥북
h2.bat //윈도우
그러면 디폴트 브라우저에 새로운 탭이 열리게 된다.
*나는 그런적이 없지만 강사님 화면처럼 주소창 맨 앞에 ip주소가 오면서 안되는 경우엔 ip주소를 지우고 'localhost'로 수정해준다.
5. 최초 한번은 JDBC URL을 'jdbc:h2:~/test', 사용자명과 비밀번호는 그대로, 아무것도 수정하지 않고 '연결'을 클릭해준다.
여기서 JDBC URL은 파일경로를 말해줌 -> ' 내 홈에 있는 test 라는 파일'을 말함.
6. 터미널을 키고 아래 코드를 작성해준다.
ctrl+c // -> 실행 종료
cd //-> 홈으로 경로 이동
ls -arlth
그러면 'test.mv.db'가 있는것을 볼 수 있어야 한다.
** 이 과정에서, 난 터미널 하나만으로 그냥 계속 코드 치고 싶어서 ctrl+c 로 위 4번에서 실행시킨걸 종료했는데, 그냥 터미널 새로 열고 바로 'ls -arlth' 입력해줘도 된다.
** 추가로 나는 처음에 실행할 때 ctrl+c로 화끈하게 종료시킨 뒤 강사님 코드 따라 치다가 그다음 단계로 못 나가고 계속 h2 사이트에서 에러가 났는데 .... 당연한거임 내가 재실행을 안하고 계속 사이트에서 접속하려고 했었음 ㅋ 그러니까 ctrl+c로 종료하신 분들은 꼭 다시 해당 디렉토리 가서 3번 코드 치고 다시 실행시키세요!
7. H2 웹 콘솔에 JDBC URL 수정하여 접속. 앞으로는 계속 이 URL로 연결해야함.
변경 URL : jdbc:h2:tcp://localhost/~/test
최초 접속 이후에 5번처럼 파일로 접속하게 되면, 웹 콘솔과 같이 접근이 안 될수도 있기 때문에 오류 발생, 충돌 가능성이 있음.
-> 따라서 파일로 직접 접근하는 것이 아니라 '소켓을 통해서 접속'할 수 있도록 URL을 위와 같이 바꿔서 연결 시켜줘야함.
그러면 위 사진같은 페이지가 나옴.
8. 중앙 빈 칸에 아래 코드 입력하여 테이블 생성
drop table if exists member CASCADE;
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
'id' 의 타입이 자바에선 Long이나 쿼리에선 'bigint'임.
generated by default as identity : null 값, 즉 값을 셋팅하지 않고 insert하면 db가 자동으로 id값을 채워줌
**이후에 아래 쿼리로 데이터 조회 가능
select * from member;
9. 데이터 insert
insert into member(name) values('spring')
데이터 조회
select * from table
하면 ID '1'번 및 입력한 이름 spring이 위 이미지처럼 테이블이 잘 나옵니다.
10. src폴더 옆에(안에 sql 폴더 sql폴더) 'ddl.sql' 파일 만들어서 git으로 쿼리 관리
drop table if exists member CASCADE;
create table member
(
id bigint generated by default as identity,
name varchar(255),
primary key (id)
);
** 터미널에서 ctrl+c로 종료하면 h2작동안함 -> 다시 키고 접속 해야함.
'Backend' 카테고리의 다른 글
김영한 스프링 입문 6. 스프링 DB 접근 기술 - 스프링 통합 테스트 (1) | 2024.06.06 |
---|---|
김영한 스프링 입문 6. 스프링 DB 접근 기술 - 순수 JDBC (0) | 2024.05.16 |
[인프런] 스프링 입문 - 섹션 1. 프로젝트 환경설정 (2) | 2021.11.27 |