H2 DB란?
H2 Database는 Java로 구현된 경량형 RDBMS이다.
Server, Embedded, In-Memory 3가지 Mode를 제공하며, 간단한 설정으로 빠르게 실행할 수 있어 로컬 개발 환경에서 많이 사용된다.
별도의 DB툴이 없이도 웹 브라우저를 통해 데이터베이스를 시각적으로 관리할 수 있는 인터페이스를 제공하며, 표준 JDBC 드라이버를 제공하여 Java 애플리케이션과 쉽게 연결이 가능하다.
H2 데이터 베이스 하나만으로도 여러 다른 데이터베이스(MySQL, PostgreSQL)와 유사한 SQL 문법을 사용할 수 있도록 지원한다.
Spring Boot와 연동하기
1. Spring 프로젝트 초기 생성시 Spring Initializr를 통해 H2 Dependency 추가 하거나 혹은 [Maven Repository]를 통해 H2 를 추가한다.
H2 Database는 3가지의 Mode(Server, Embedded, In-Memory)
Server Mode
H2를 독립 실행형 서버로 실행하여 일반 DB와 같이 여러 클라이언트가 네트워크를 통해 데이터베이스에 접속할 수 있는 모드이다.
테스트 중 여러 JVM에서 데이터베이스를 공유하며 로컬에서 네트워크 데이터베이스처럼 사용할 수 있다.
Embedded Mode
H2 데이터베이스를 애플리케이션에 내장하여 사용하는 모드이며, 애플리케이션 내부에서 실행되어 동일한 JVM에서만 접근할 수 있다.
DB 데이터를 파일로 저장하여 영구히 저장하거나, 메모리 기반 데이터베이스로 사용할 수 있다.
In-Memory Mode
In-Memory Mode는 Embedded Mode의 하나이며, DB의 데이터를 메모리에 저장하여 사용하는 방식이다.
H2가 동작하는 애플리케이션이 종료되면 저장된 데이터가 모두 사라진다.
2. Spring Boot Application에 H2 Dependency가 추가되었다면 몇가지 설정을 해줘야한다.
spring:
datasource:
driver-class-name: org.h2.Driver # H2 데이터베이스를 사용하기 위한 JDBC 드라이버 클래스 이름
username: sa # 데이터베이스 접속 사용자 이름 (기본값: 'sa')
password: # 데이터베이스 접속 비밀번호 (H2의 기본값은 빈값)
url: jdbc:h2:mem:test # 데이터베이스 URL (H2 메모리 모드로 'test' 이름의 DB 생성)
h2:
console:
enabled: true # H2 웹 콘솔 활성화 (true로 설정 시, 웹 UI를 통해 DB 확인 가능)
path: /h2-console # H2 콘솔에 접속할 경로 (예: http://localhost:<port>/h2-console)
jpa:
database-platform: org.hibernate.dialect.H2Dialect # JPA에서 사용할 데이터베이스 방언(H2 DB에 맞게 설정)
hibernate:
ddl-auto: create # 데이터베이스 초기화 전략
# none: 변경 없음
# create: 시작 시 스키마 생성
# create-drop: 시작 시 생성, 애플리케이션 종료 시 삭제
# update: 기존 데이터 유지하면서 변경사항 반영
# validate: 기존 스키마를 검증 (변경 없음)
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect # Hibernate에 사용할 H2 데이터베이스 방언
format_sql: true # true 설정 시, 출력되는 SQL 쿼리를 포맷팅하여 가독성 향상
show_sql: true # true 설정 시, 실행되는 SQL 쿼리를 콘솔에 출력
H2는 기본적으로 sa라는 사용자 이름과 빈값을 패스워드 기본값으로 사용한다.
3. H2 Dependency 추가 및 설정이 마무리 되었다면, 서버를 실행시켜서 콘솔에 접속할 수 있다.
여기서는 별도의 서버 포트를 설정하지 않았기때문에 아래 URL을 통해 접근할 수 있다.
콘솔 접근 End-Point는 설정에서 변경할 수 있다.
https://localhost:8080/h2-console
Saved Settings 에서 사용하고자 하는 DB의 종류를 세팅할 수 있다.
JDBC URL에서는 파일 기반의 Embedded Mode와 In-Memory Mode의 URL 형태가 다르니 사용하고자하는 방식의 URL을 입력한다.
이후 Test Connection을 통해 정상적으로 연결되었는지 확인후 접속하면 아래와 같은 DB 인터페이스를 확인할 수 있다.
일반적인 DB 툴을 사용하듯 좌측에서 테이블과 관련된 정보를 확인할 수 있으며, 우측의 넓은 창에서 쿼리 작성 및 쿼리 질의 결과를 확인할 수 있다.
'Spring' 카테고리의 다른 글
[Spring] Java 예외(Exception) 처리 전략 (1) | 2024.11.29 |
---|---|
[Spring] 카카오 로그인 REST API 방식 적용 및 구현 (0) | 2024.11.26 |
[Spring] Junit 테스트시 Atomikos 커넥션풀의 Connection Name 중복 오류 (0) | 2024.07.08 |
IntelliJ에서 Spring MVC 세팅하기 (0) | 2024.03.17 |
[Spring] Spring Boot 3 마이그레이션 시작하기 (0) | 2023.12.13 |