도슐랭스타
H2 DB 설정 본문
Java로 만든 경량형 관계형 데이터베이스(RDBMS)
메모리 또는 파일 기반으로 동작할 수 있음.
설치 없이 바로 사용 가능함.
개발/테스트 단계에서 굉장히 많이 쓰이는 DB임.
H2의 장점이 뭐지?
가벼움 - 설치 X, JAR로 바로 사용 가능 (내장형)
빠름 - 메모리에서 동작하므로 속도 빠름
개발에 최적 - 실행할 때마다 DB가 초기화되기 때문에 테스트하고 바로 버릴 수 있음. (휘발성)
웹 콘솔 제공함 - /h2-console로 웹에서 SQL 직접 확인 가능
자동 테이블 생성 가능 - JPA 설정만 해두면 @Entity만으로 테이블 생성됨
JPA 테스트에 적합함 - Repository 테스트, Service 테스트를 할 때 가짜 DB 대신 실제 JPA 작동 방식 그대로 확인 가능.
단점도 있긴 함.
휘발성 메모리 사용 - 서버 끄면 데이터 사라짐 (memory 방식일 경우)
제한된 성능 - 대용량 처리나 복잡한 트랜잭션에 불리함
보안 약함 - 기본 설정으로는 보안에 취약 (운영 환경엔 위험)
제약 조건 부족 - 일부 DB 기능이 MySQL, PostgreSQL보다 부족함
메모리 DB와 파일 DB
타입 | URL | 설명 |
메모리 | jdbc:h2:mem:testdb | 서버 종료 시 데이터 사라짐 |
파일형 | jdbc:h2:file:~/testdb | 파일로 저장되므로 유지됨 |
→ H2는 개발 중 잠깐 쓰고, 운영에서는 MySQL이나 PostgreSQL로 바꿀 예정.
??잠깐 그럼 지금까지는 어떻게 오류가 안나고 잘 작동했던거지???
은 아니고 사실 알고보니
Spring Boot가 기본으로 메모리 H2 DB를 자동 설정해준 상태였던 것!
implementation 'com.h2database:h2'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
build.gradle에 의존성도 다 적용 시켜둬서
→ 이 두 개만 있어도, 별다른 설정 없이 H2가 기본 메모리 모드로 자동 설정돼서 작동됨.
설정이 아무것도 없으면 Spring Boot는 이렇게
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
→ 위 설정들이 자동으로 적용됨.
그럼 이제 직접 설정해볼게요
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'com.h2database:h2'
}
의존성 확인하기.
application.properties 설정
# H2 데이터베이스 설정
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
# JPA 설정
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true
# H2 콘솔 설정
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
설정 끝! 매우 간단하다!
Test
H2 Console 접속 → http://localhost:8080/h2-console
Connect 하면
깨끗하군.
Post 하고 다시 해보면
잘 된다!
반응형
'Spring Boot project' 카테고리의 다른 글
DTO 클래스 생성 Request, Response (1) | 2025.04.13 |
---|---|
ReadingRecordController 생성, get/post Test (1) | 2025.04.12 |
ReadingRecordService 생성 (0) | 2025.04.11 |
ReadingRecordRepository 생성 (0) | 2025.04.10 |
ReadingRecord 엔티티 생성 (0) | 2025.04.09 |
Comments