SPRING 입문 [ 코드로 배우는 스프링 부트 ]

[스프링 입문] 섹션 6.1 스프링 DB 접근 기술 (H2 데이터베이스 설치)

wlalsu_u 2023. 1. 17. 09:50

6.1.0  스프링 DB 접근 기술

 

 

섹션 5에서는, 회원가입 정보를 메모리에 저장하였다.

 

하지만 메모리 저장시,

서버를 내렸다가 다시 켜면 데이터가 모두 지워진다는 문제점이 있다.

 

 

 

따라서, 실무에서는 데이터 베이스에 정보를 저장하고 관리한다.
섹션 6에서는 이러한 스프링 DB 접근 기술을 공부하고자 한다.

 

 

 

섹션6 DB 접근 기술 공부 목차

 

 

1) H2 데이터베이스 : 가볍고 심플한 데이터베이스

 

2) 순수 JDBC : sql 을 사용하여 db 와 서버를 연결

 

3) 스프링 Jdbc Template : 스프링이 중복을 제거하여, 템플릿 제공 어플리케이션에서 db 를 보다 쉽게 넘길 수 있음

 

4) JPA : sql 조차 개발자가 직접 작성하지 않고, 등록/수정/삭제를 모두 관리해줌

 

5) 스프링 데이터 JPA : jpa 를 편리하게 사용할 수 있도록 감싼 기술

 

 

 

 

지금까지 만들어온 회원 객체에 이 기술들을 하나씩 적용해보자.

 

 

 


 

 

6.1.1  H2 데이터 베이스 설치

 

 

 

H2 데이터베이스는 용량이 작고 가볍기 때문에, 교육용으로 많이 사용된다.

(실무에서는 mysql, oracle 을 많이 사용)

 

 

H2 데이터 베이스는 아래 사이트에서 다운로드 할 수 있다.

 

 

https://www.h2database.com/html/download-archive.html

 

Archive Downloads

 

www.h2database.com

 

 

 

 

최근 버전을 설치하면, 일부 기능이 정상 동작하지 않을 수 있으니,

1.4.200 버전을 설치하는 것이 좋다.

 

 

 

 

 

 

 

 

 


 

 

6.1.2  H2 데이터 베이스 실행

 

 

다운로드를 완료한 후, 압축을 풀고

cmd 창에서 h2  >  bin  >  h2.bat 파일을 실행한다. 

 

(제대로 실행되지 않을 때는 url 앞에 localhost를 적어준다)

 

 

 

파일을 실행하면, 다음과 같은 화면을 볼 수 있다.

 

 

 

 

 

 

 

웹사이트에 들어가면, 처음에는 데이터 베이스 파일을 만들게 된다.

 

 

JDBC URL 을 통해 이 파일의 경로를 볼 수 있다.

(jdbc:h2:~/test 로 설정되어 있는 것을 볼 수 있다.)

 

 

 

사용자명 , 비밀번호를 그대로 두고 연결 버튼을 누르면,

다음과 같은 화면이 나타난다.

 

 

 

 

 

 

 

 

 

왼쪽 상단의 빨간색으로 동그라미를 그린 버튼을 클릭하면,

페이지를 나갈 수 있다.

 

 

 

페이지를 나간 후,

cmd 창에서 home 에 test.mv.db 파일이 생성되었는지 확인해보자.

 

 

 

 

 

 

 

 


 

 

 

위와 같이 파일로 접근하게 되면,

 

어플리케이션과 웹 콘솔이 동시에 충돌하여 오류가 날 수도 있다.

 

 

 

따라서. 파일에 직접 접근하지 않고, TCP 소켓을 통해 접근하고자 한다.

 

 

 

소켓을 통해 접근하면, 어플리케이션과 콘솔을 동시에 접근하여도 충돌이 발생하지 않는다.

 

 

 

 

 

먼저, JDBC URL

jdbc:h2:tcp://localhost/~/test 로 바꾸고 실행한다.

 

 

 

 

 

 

 

연결하면 다음과 같은 화면이 나타난다.

 

 

 

 

 

 

 

 

 

먼저, table 을 하나 만들기 위해, 다음과 같이 코드를 작성한다.

 

 

 

drop table if exists member CASCADE;
create table member
(
    id bigint generated by default as identity,
    name varchar(255),
    primary key(id)
);

 

 

 

- id : java 에서는 long 타입을 사용하였지만, db 에서는 bigint 타입을 사용

 

- generated by default as identity : id 값을 세팅하지 않으면 db가 자동으로 id값을 생성하여 넣어줌

 

 

 

 

 

 

코드를 작성하고 실행하면, 

 

사진과 같이 왼쪽에 MEMBER 테이블이 만들어지는 것을 볼 수 있다.

 

 

 

 

 

 

 

 

 

다음으로, 조회를 하기 위해 select * from member; 코드를 작성하고 실행한다.

 

(옆의 MEMBER 를 클릭하면 코드가 자동으로 작성된다.)

 

 

 

실행해보면, 아래 사진과 같이 ID / NAME 값이 아무것도 없는 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

 

새로운 회원 값을 하나 넣어보자.

 

아래의 코드를 작성하면, name 이 'spring' 인 회원이 생성된다.

 

 

insert into member(name) values('spring')

 

 

똑같은 코드를 사용하여, 이름이 spring2인 회원도 저장해보자.

 

 

 

다시, 회원을 조회해보면,

 

아래와 같이 이름이 spring1, spring2 회원이 생성되었음을 확인할 수 있다.

 

 

 

 

 

 

 

회원 목록을 통해서도 확인할 수 있다.

 

 

 

 

 

 

 


 

 

6.1.3  IntelliJ 에서 sql 파일 관리

 

 

IntelliJ 에서 sql 파일을 생성하고 관리해주면,

git 에서도 관리가 가능하고, 코드를 쉽게 파악할 수 있어 편리하다.

 

 

먼저, hello-spring 에 'sql' 이름의 디렉토리를 하나 생성하고,ddl. sql 파일을 만들어준다.

 

 

그리고, 앞서 작성한 sql 코드를 저장해주자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

김영한 '스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술' 강의를 기반으로 작성하였습니다.

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard