본문 바로가기
공부/springboot

개발용 임시 DB : H2DB

by 샤샤샤샤 2023. 1. 25.

H2DB란?

따로 설치하지 않고 사용할수 있는 관계형 데이터베이스.

자바 기반으로 설계되었으며, 임베디드 모드의 인메모리 모드를 사용할수 있다. 가볍고 빠르며 브라우저 기반 콘솔 역시 사용 가능하나, 어디까지나 개발 과정에서 간단한 테스트를 위해 개발된 데이터 베이스이기 때문에 상용으로 사용하기에는 무리가 있다.

 

In-Memory db란?

다른 상용 db들처럼 데이터를 외부 저장장치에 저장하는 것이 아닌, 메모리에 저장하는 방식의 db를 말한다.

다만 메모리에 저장하기에 휘발성이 존재한다. 최종적으로는 외부 저장장치에 저장하지 않으면 모든 데이터가 날아갈 위험이 존재하기에 주로 테스트 용도의 db로 사용한다.

 

스프링 부트를 이용해 사용하기

1. 공식 사이트에 다운받는다.

http://www.h2database.com/html/main.html

 

H2 Database Engine

H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size     Supp

www.h2database.com

 

2. application.properties 파일에서 설정해준다.

# 타임리프
# 캐시 off : html파일을 수정시마다 갱신
spring.thymeleaf.cache=false

## DATABASE - H2
# 1. 크롬 : localhost:8080/h2-console
# 2. jdbc url : jdbc:h2:mem:testdb
spring.h2.console.enabled=true
#콘솔창 만듬
spring.h2.console.path=/h2-console

## in-memory DB
# 메모리에서 돌아가는 경량 db를 사용함을 의미
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver

## file DB
# user home directory is C:\Users(user name) in Windows OS.
# testdb.mv.db file make ( file is empty file ).
# cmd console : type nul > testdb.mv.db
#spring.datasource.url=jdbc:h2:~/testdb
# ~ : 내 계정 폴더를 의미함
#spring.datasource.driverClassName=org.h2.Driver

# JPA
# h2에 연결하기 위한 코드
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
# ddl-auto = update
# DB업데이트 한다는 의미
# none : 이 옵션 사용하지 않음을 의미 - 상용 DB연결시 사용
# create : 기존 테이블을 무조건 삭제하고 다시 생성 (DROP + CREATE)
# update : 변경부분만 반영(상용DB를 사용할 시에는 사용하면 안됨)
# validate : 엔티티(DB열 매칭 클래스)와 테이블과 정상 매칭되었는지만 확인.
spring.jpa.hibernate.ddl-auto=create

 

** JDBC : 자바에서 db를 다루기 위한 api. 데이터베이스와 통신하기 위해선 반드시 JDBC를 사용해야 한다.

** ORM : 관계형 데이터베이스의 개념과 객체지향적 개념은 완벽히 매칭되지 않는다. 한쪽에는 존재하는 개념이 한쪽에는 존재하지 않기 때문이다. 이를 페러다임의 불일치라고 표현하기도 한다. 이러한 불일치 때문에 만약 둘 중 하나를 다른 하나로 표현하고 싶으면, 아주 복잡한 과정을 거쳐야 한다. 예를 들어 db의 JOIN 개념과 객체지향의 참조 개념은 아주 다르며, 객체지향의 상속관계 역시 db로 표현하기 어렵다. 개발자가 이를 일일이 복잡한 과정을 거쳐 매핑시켜주는 과정을 대신해주는 것이 바로 ORM(Object Relational Mapping)이다.

** JPA : 자바측 ORM.

 

즉, JDBC는 단순히 db로 접근하는 api, JPA는 자바에서 관계지향 db를 관리할수 있게 하는 api인 것이다.

 

**엔티티 클래스: 테이블과 매핑되는 클래스. 

 

'공부 > springboot' 카테고리의 다른 글

JPA 사용법(2) -- JPQL  (0) 2023.01.26
JPA 사용법(1) -- JPA 사용법  (0) 2023.01.26
MVC -- Model(2) : 데이터 받아오기  (0) 2023.01.25
데이터의 전송 타입( Get/ Post)  (0) 2023.01.25
MVC -- Model(1): 데이터 전송하기  (0) 2023.01.25