Spring boot기반 Web Application 개발[17] - H2 데이터베이스 설치

1 minute read

지금까지 회원 등록, 관리를 위한 기본적인 MVC 로직을 구현했다. 이제 데이터베이스를 연동해 데이터를 관리해보자. 이번 포스팅에서는 데이터베이스를 설치하고, 간단한 실습을 진행한다.

데이터베이스 - H2

다운로드

Web 애플리케이션을 구축해봤다면, oracle , MongoDB, Mysql 등의 데이터베이스가 익숙할 것이다. 이번 프로젝트에서는 H2 데이터베이스로 저장소를 구축한다. 사실 이번 인프런 강의를 수강하며 H2 데이터베이스를 처음 알게되었다. 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면을 제공하기 때문에 이번 실습에 적용한다고 한다. 간단하게 설치를 진행해보자.

우선, https://www.h2database.com/html/main.html url에 접속해보자.

h2database

Windows Installer, All Platforms 둘 중에 아무거나 선택해도 무관하다. 간단한 Windows Installer로 설치를 진행해보자.

설치하고, 실습하기

데이터 베이스 실행

설치는 간단하게 다운로드 받은 파일을 실행하면된다. 설치 완료 후 H2 Console을 실행하자. 파일 위치를 찾기 힘들다면 윈도우 검색으로 쉽게 찾을 수 있다.

H2 main

[참고]

command에서는 chmod 755 h2.sh 권한을 설정하고, ./h2.sh 명령어로 실행할 수 있다.

(chmod : 권한 변경, 755 : user 7 / group 5 / others 5/ , read write execute 권한)

데이터베이스 파일 생성

최초로 접속할 때는 JDBC URL 란에 jdbc:h2:~/test 을 입력하고 연결하자.

image

정상적으로 접속된다.

image

이후에는 소켓 접속 방식인 jdbc:h2:tcp://localhost/~/test 로 접속한다. JDBC URL을 변경하고 접속하는 이유는 다중 접속 시에 예기치 못한 충돌을 막기 위함이다. 따라서, 이제 부터 항상 소켓으로 DB에 접근하자.

image

테이블 생성, Insert

이제 테이블을 생성해보고, 직접 데이터를 넣어보자. 아래 코드를 커맨드라인에 입력하고, 실행해보자.

drop table if exists member CASCADE;
create table member
(
 id bigint generated by default as identity,
 name varchar(255),
 primary key (id)
);
  • 이미 테이블이 존재한다면, 삭제하고 생성한다.
  • id 값은 primary key 값이고, 시퀀스적으로 증가하게 된다.
    • HashMap으로 저장소를 구현했을 때와 동일하다.
파일명 : MemoryMemberRepository.java
위치 : \hello.hellospring\controller\MemoryMemberRepository.java
private static Map<Long,Member> store= new HashMap<>();
private static long sequence =0L;

@Override
public Member save(Member member) {
	member.setId(++sequence);
	store.put(member.getId(),member);
	return member;
}

이제, 테이블이 생성되었으면, 데이터를 insert해보자.

insert into member(name) values('spring1')
Insert into member(name) values('spring2')

그리고 데이터를 조회해보자.

select * from member

테이블 조회

정상적으로 처리된 것을 확인할 수 있다!

순수 JDBC를 이용해 데이터베이스를 연동하는 작업은 10~20년전에나 활발하게 사용하던 방식이라고한다. 우선, 다음 포스팅에서 JDBC로 데이터베이스와 스프링부트를 연동하는 작업을 진행해보자. 이후에 JdbcTemplate, JPA 방식으로 연동해보며, 차이점을 파악해 볼 예정이다.


이 포스팅은 인프런 김영한님의 스프링 입문 - 코드로 배우는 스프링 부트 강의를 토대로 작성되었습니다.

Reference

Leave a comment