개발도구/IDE

IntelliJ에서 H2 연결하고 H2 Console 사용하기

노루아부지 2020. 12. 19. 14:10

웹 개발을 하다 보면 데이터베이스를 사용하게 되는 경우가 정말 많습니다.

하지만, 로컬에서 개발하기 위해 로컬환경에 데이터베이스를 설치하고 스키마, 테이블을 생성하고 관리하기 여간 귀찮은 것이 아닙니다. 이럴 때, H2를 사용할 수 있습니다.

 

H2란?

H2는 자바로 구현된 오픈소스 데이터베이스 입니다. 메모리와 파일 기반의 데이터베이스 설정이 가능합니다. 또한 자바 애플리케이션에 포함해서 사용하거나 서버모드로 구동할 수 있습니다. 특히, 별도의 설치과정 없이 바로 사용할 수 있다는 장점 때문에 많이 사용되는 DB 입니다.

 

 

H2 사용 방법

 

1. (gradle을 사용할 경우) build.gradle 에 다음과 같이 설정합니다.

 

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
  implementation 'org.springframework.boot:spring-boot-starter-web'
  compileOnly 'org.projectlombok:lombok'
  developmentOnly 'org.springframework.boot:spring-boot-devtools'
  runtimeOnly 'com.h2database:h2'
  annotationProcessor 'org.projectlombok:lombok'
  testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

여기서 org.springframework.boot:spring-boot-starter-web은 없어도 될것 같지만 h2-console 을 위해서 꼭 있어야 합니다.

 

 

2) h2 데이터베이스 설정

 

3-1) In-Memory

    - jdbc:h2:mem:<databaseName>

3-2) 임베비드

    - jdbc:h2:[file:][<path>][databaseName]

3-3) 서버모드

    - jdbc:h2:tcp://<server>[:<port>]/[<path>]<databaseName>

 

여기서는 In-Memory를 사용합니다.

// h2 데이터베이스 기본 접속 주소
spring.datasource.url=jdbc:h2:mem:testdb;
// h2 드라이버
spring.datasource.driverClassName=org.h2.Driver

// h2 데이터베이스 접속 username
spring.datasource.username=sa
// h2 데이터베이스 접속 password
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
// jpa 사용 시, DDL 적용 모드
spring.jpa.hibernate.ddl-auto=create

 

 

3. H2 웹 콘솔 설정

H2는 기본적으로 웹 콘솔을 지원하며, 스프링부트에서는 다음의 방법으로 웹 콘솔을 활성화 시킬 수 있습니다.

1) spring-boot-devtools 적용

2) application.properties에 다음과 같이 설정

// h2-console 활성화
spring.h2.console.enabled=true
// h2-console의 url 지정
spring.h2.console.path=/h2-console

 

이제 http://localhost:8080/h2-console로 접속하면 다음 화면을 볼 수 있습니다.

 

여기서 JDBC URL을 설정하고 연결버튼을 클릭하면 DB에 접속하게 됩니다. 이 콘솔 안에서 query를 실행하여 데이터를 확인할 수 있습니다.

 

 

 

4. Entity 생성

테스트를 위해 아래와 같은 entity를 생성합니다.

import lombok.Getter;
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
@Getter
@Setter
public class User {
    @Id
    private String userId;
    private String userName;
    private Integer age;
}

 

 

이 상태에서 spring boot를 재시작 한 후, h2-console에 접속하면 아래와 같이 User 테이블에 생성된 것을 확인할 수 있습니다.

728x90
loading