on
Springboot에서 h2 Database 설정
Springboot에서 h2 Database 설정
반응형
Springboot를 사용하면서 간단하게 인메모리 데이터베이스 구성하여 확인하기 위해 사용합니다.
1. dependency 추가 (maven)
- DB연결을 하기 위한 jdbc 인터페이스 추가
- h2 dependency를 추가 (사용하는 DB에 따라 맞는 dependency를 추가합니다.)
org.springframework.boot spring-boot-starter-jdbc com.h2database h2 runtime
2. Configuration
application.yml (Springboot 프로젝트에 포함된 application.properties 또는 application.yml에 설정)
spring: h2: console: enabled: true path: /h2-console datasource: url: jdbc:h2:~/test driver-class-name: org.h2.Driver username: sa password: initialization-mode: always
path :
- 브라우저 접속시 url (ex: localhost/h2-console)
initialization-mode: (기본값은 never)
- classpath 루트에 있는 schema.sql로 데이터 베이스 스키마 생성하는 기능을 기본적으로 embedded DB에만 지원.
다른 DB사용시에는 initialization-mode: always 설정을 해줘야 프로젝트 runtime시에 schema.sql이 실행 됩니다.
(저는 jpa 설정 때문인지 embedded DB인데도 자동 생성되지 않아서 설정했습니다.)
initialization-mode : always 설정시 classpath 루트에 있는 schema.sql, data.sql를 읽어 생성합니다. (yml설정을 통해 path나 파일명 변경 가능)
- schema.sql : DDL 데이터 구조문
- data.sql : DML 명령문
3. Spring에서 JPA / Hibernate
- H2 DB와 hibernate 사용시 충돌이 발생할 수 있는 부분이 있음
- spring.jpa.generate-ddl=true (properties 기준) 설정시Spring은 EntityScan을 통해 @Entity 애노테이션이 명시한 클래스를 찾아
DDL문을 생성합니다.
- Hibernate는 classpath 루트의 import.sql를 읽어 프로젝트 runtime시실행 됩니다.
만약 Spring이 인식하는 schema.sql, data.sql과 import.sql 내용이 중복된다면 오류가 발생할 수 있습니다.
추가로 Springboot 2.5 이후 버전 사용시 hibernate와 data.sql 추가 사용설정시 참조블로그입니다.
- https://sdy-study.tistory.com/272 (Spring Boot 2.5 이후 버전과 Hibernate 와 data.sql)
반응형
from http://eddies.tistory.com/34 by ccl(A) rewrite - 2021-12-10 12:01:13