스프링부트 H2 데이터베이스
H2는 RDBMS(관계형데이터베이스)입니다.
매우 빠르고작은 크기의 데이터베이스라고 보시면 됩니다.
주로 메모리에 데이터를 저장하는 용도로 쓰이며, 디스크에 데이터를 저장할수도 있습니다.
- 매우 빠른 오픈 소스, JDBC API
- 임베디드 및 서버모드(영구 데이터베이스), 메모리 내 데이터베이스
- 브라우저 기반 콘솔 응용 프로그램 지원
- 작은 설치 공간 : 약 2MB jar 파일 크기
영구 데이터베이스와 인 메모리 데이터베이스의 차이점
영구 데이터베이스는 실제 메모리에 데이터를 유지하므로 데이터베이스 서버가 반송 되더라도 다시 사용이 가능합니다.
인 메모리 데이터베이스의 경우 데이터는 시스템 메모리에 저장되며 프로그램을 닫으면 데이터가 손실됩니다.
인 메모리 데이터베이스는 POC(Proof Of Concept)에 사용되며 프로덕션 응용 프로그램에서는 권장하지 않습니다.
영구 데이터베이스는 Oracle, Mysql, Postgres 등을 사용하며, H2는 일반적으로 메모리 데이터베이스로 사용합니다.
인메모리DB
- 컴퓨터가 꺼지면 모든 내용이 날라감
- 연속성이 없음
- 연속성을 주는 방법이 있지만, 그 방법을 쓰려면 그냥 일반 DB모드로 쓰면 된다.
Maven 의존성 라이브러리
pom.xml
<dependencies> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies>
1. H2 데이터베이스 설정
1-1. 기본설정
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.h2.console.enabled=false
H2데이터베이스는 따로 설정하지 않으면 위와 같은 값으로 기본 설정을 합니다.
datasource.url의 jdbc:h2:mem:testdb는 testdb 스키마에 mem
인 메모리 데이터베이스로 동작하라는 설정입니다.
1-2. 기본설정 무시
src/main/resources/application.properties
spring.h2.console.enabled=true
application.properties에 추가하여 H2 콘솔을 사용하게 합니다.
물론 나머지 설정들은 기본값으로 들어갑니다.
2. H2 콘솔 접속
2-1. 스프링 실행 후 로그인 창 접속
http://localhost:8080/h2-console

기본 설정으로 스프링을 실행했다면 따로 건들건 없으며 Connect 버튼을 클릭하여 접속합니다.
2-2. H2 로그인 접속

이 창에선 직접 테이블을 만들거나 지우거나 CRUD가 가능합니다.
단, 스프링부트를 종료하게 된다면 작업했던 내역들은 전부 사라집니다.
3. 스프링부트가 실행될때 SQL문을 실행시키기
3-1. sql파일생성
src/main/resources/data.sql
CREATE TABLE Employee ( id integer NOT NULL, firstName varchar(255) not null, lastName varchar(255) not null, email varchar(255), phoneNumber varchar(255), hireDate timestamp, salary integer, commissionPct integer, primary key(id) );
3-2. 스프링 재 실행 후 접속

EMPLOYEE 테이블이 생성되면서 실행된것을 볼 수 있습니다.
CREATE문이나 INSERT문 등 테스트환경에 필요한 데이터베이스의 값들을 미리 설정하여 좀더 쉽게 개발이 가능합니다.
'Spring Boot > 개발환경' 카테고리의 다른 글
스프링부트 - Runners (0) | 2019.04.11 |
---|---|
스프링부트 Maven 프로젝트 Import 하기 (0) | 2019.04.08 |
STS 다운로드 및 설치 (1) | 2019.04.05 |
start.spring.io를 이용한 스프링 부트 프로젝트 생성 (0) | 2019.03.27 |