본문 바로가기
IT/Spring

Springboot에서 h2 Database 설정

by eddie_factory 2021. 12. 10.
반응형

Springboot를 사용하면서 간단하게 인메모리 데이터베이스 구성하여 확인하기 위해 사용합니다.

 

1. dependency 추가 (maven)

  - DB연결을 하기 위한  jdbc 인터페이스 추가

  - h2 dependency를 추가  (사용하는 DB에 따라 맞는 dependency를 추가합니다.)

 

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
	<scope>runtime</scope>
</dependency>

 

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
    
  sql:
    init:
      mode: always

path : 

 - 브라우저 접속시 url (ex: localhost/h2-console)

sql.init.mode: (기본값은 never)

 -  classpath 루트에 있는 schema.sql로 데이터 베이스 스키마 생성하는 기능을 기본적으로 embedded DB에만 지원.

    다른 DB사용시에는 initialization-mode: always 설정을 해줘야 프로젝트 runtime시에 schema.sql이 실행 됩니다.

    (저는 jpa 설정 때문인지 embedded DB인데도 자동 생성되지 않아서 설정했습니다.) 

 

sql.init.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)

 

 

 

 

반응형

'IT > Spring' 카테고리의 다른 글

Spring Profile 설정법  (0) 2022.01.07
DB Replication에 따른 Spring 설정  (0) 2021.12.10
Spring Security 기본 API, filter  (0) 2021.07.08
XML to JSON 변환하기 (java)  (386) 2021.06.08
Spring Boot 프로젝트 만들기 (with. 이클립스 Maven)  (441) 2018.06.07

댓글