본문 바로가기
Tech/Spring

Spring Boot & H2 DB 를 이용한 CRUD 구현 - 1

by Augustine™ 2019. 9. 8.
반응형

Spring Boot와 H2 database를 이용한 CRUD를 구현해보자. H2 database는 embedded server에서 구현할 수 있는 메모리 database다. Spring boot에서는 h2 db에 대한 설정을 쉽게할 수 있다. 

H2 database의 class name은 org.h2.Driver이며, Spring Boot application에서 datasource, JPA, connection pool과 관련된 설정은 application.properties 파일에 저장할 것이다. 이 포스팅에서는 JPA의 CrudRepository 인터페이스를 사용하여 구현할 것이다.

먼저 여러분들의 STS(또는 eclipse.. 그게 그거지.)에 H2 database를 설치할 것이다.

H2 데이터베이스에 대해 잠깐 얘기하자면, Open Source고 was server 모드에서 embedded 형태로 사용할 수 있다. sql 쿼리는 브라우저를 통해서 console을 실행할 수 있다. 또한 매우 경량(약 2mb 정도의 jar)이다.

아래는 다른 dbms와 특징을 비교한 표다.

Pure Java Yes Yes Yes No No
Memory Mode Yes Yes Yes No No
Encrypted Database Yes Yes Yes No No
ODBC Driver Yes No No Yes Yes
Fulltext Search Yes No No Yes Yes
Multi Version Concurrency Yes No Yes Yes Yes
Footprint (embedded) ~2 MB ~3 MB ~1.5 MB
Footprint (client) ~500 KB ~600 KB ~1.5 MB ~1 MB ~700 KB

1. 아래 웹사이트에 가서, 여러분의 PC에 다운로드한 후, 설치하자.

h2database.com/html/main.html

H2 database website

Download에 Windows installer(5 MB)를 다운로드 받은 후, 설치한다. 다른 플랫폼이면 All platforms를 받자.

설치는 특별한 게 없으니, 그냥 Next 를 누르며 설치를 하면 된다.

2. 이제 설치를 했으니, H2 Console을 열어보자. console의 기본포트는 8082를 사용한다. 혹시, 이미 8082를 사용하고 있다면 확인하고 변경하자.

H2 Console을 열기 위해서는 h2 db의 설치 디렉토리에서 command를 실행하여 h2를 실행하면 된다. 아래 그림처럼.

h2 database 설치 디렉토리
h2 실행

h2를 실행하면 Browser console이 자동으로 실행된다. 혹은 본인이 쓰는 브라우저에서 localhost:8082로 직접 실행해도 된다.

참고로 한국어도 지원된다. open source 에 참여하는 한국인이 distribute 한 듯.

초기 비밀번호는 전 세계인이 사랑하는 1234 다. 

h2 console 로그인

로그인 하면, 다음 그림처럼 나온다.

h2 console 실행

3. script창에서 아래 ddl문을 실행하자. 실행하면, 우리가 테스트할 테이블과 데이터가 생성된다. 아래 members 테이블로 crud를 구현할 것이다.

CREATE TABLE IF NOT EXISTS members (
  m_num bigint(5) NOT NULL AUTO_INCREMENT,
  name varchar(100) NOT NULL,
  age int(3) NOT NULL,
  PRIMARY KEY (m_num)
);

INSERT INTO members (m_num, name, age) VALUES
	(1, 'rubin', 7),
	(2, 'ruahn', 6); 

4. h2 database가 서버모드로 실행했다면, jdbc  url은 jdbc:h2:tcp://serverIP/~/test 일 것이다. 하지만, 우리는 embeded 모드로 테스트할 것이기 때문에, jdbc url은 jdbc:h2:~/test 이다. 

5. Spring에서 H2 database에 접속하려면, 앞서 언급한 org.h2.Driver의 h2 driver가 필요하다. maven 설정에서 아래와 같이 설정하자.

<dependency>
  <groupId>com.h2database</groupId>
  <artifactId>h2</artifactId>
</dependency> 

6. application.properties 설정. 아래와 같이 설정하자.

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:~/test
spring.datasource.username=sa
spring.datasource.password=1234

 

7. domain 클래스를 만들자. Members.java 

패키지의 구조는 다음과 같다.

com.example.h2crud.domain

com.example.h2crud.repository

domain 패키지에는 우리가 h2 database에서 만든 테이블을 JPA Entity 클래스로 만들 것이다. (JPA에 대해서 아주 할 말이 많지만, jpa에 관한 주제는 아니기에 jpa에 대한 설명은 생략한다.)

아래와 같이 만들자.

package com.example.h2crud.domain;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "members")
public class Members implements Serializable {

	private static final long serialVersionUID = 8124227299932339862L;

	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column(name="m_num")
	private long mNum;
	
	@Column(name="name")
	private String name;
	
	@Column(name="age")
	private int age;
}

 

8. Repository interface를 만들자.

아래와 같이 CrudRepository를 상속해서 인터페이스를 만들면.. 이거 하나만으로 기본적인 CRUD를 구현할 수 있다.

package com.example.h2crud.repository;
import org.springframework.data.repository.CrudRepository;

import com.example.h2crud.domain.Members;

public interface MemberRepository extends CrudRepository<Members, Long> {
	
}

 

 
반응형

'Tech > Spring' 카테고리의 다른 글

2. Spring RabbitMQ  (0) 2020.02.11
1. Spring AMQP  (0) 2020.02.11
Spring Boot + Spring Security + OAuth2 을 이용한 Google SSO인증  (4) 2018.10.29
JPA와 mybatis 병행을 위한 설정  (0) 2018.10.19
Maven - 부모, 자식 POM 예제  (0) 2018.07.04

댓글