Intellij에서 H2 연결

지니·2021년 7월 12일
0

대학생의 일기

목록 보기
4/17

H2 Database란?

H2 Database는 자바 기반의 오픈소스 관계형 데이터베이스 관련 시스템이다.


H2 연결 방법

IDE는 Intellij를 사용하였고 Spring boot 프로젝트는 이미 생성되었다는 가정 하에 정리해볼 예정이다.

1. 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'
}

2. h2 데이터베이스 설정

application.properties 에 다음과 같이 설정해준다.

// h2 데이터베이스 기본 접속 주소 (In-Memory일 경우)
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

여기서 본인은 h2 드라이버 작성하는 부분에서

Cannot resolve class or package 'h2'
Cannot resolve class 'Driver'

이런 오류를 보게 되었다.

implementation 'org.springframework.boot:spring-boot-starter-jdbc'
runtimeOnly 'com.h2database:h2'

build.gradle에 이렇게 작성해줌으로써 해결하였다. jdbc, h2 Database 관련 라이브러리를 추가한 것이다.


3. H2 웹 콘솔 활성화

application.properties 에 다음과 같이 설정해준다.

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

이러한 설정을 마쳤으면 http://localhost:8080/h2-console 로 접속하면 다음과 같은 화면을 볼 수 있게 된다.

여기서 접속은 되지만 화면에 localhost가 연결을 거부했다는 문구가 떠서 당황했었다. 검색한 결과 WebSecurityConfigurerAdapter를 상속받아 만든 클래스의 오버라이딩 된 configure 함수 내에서 다음과 같은 코드가 필요하다고 한다.

http.headers().frameOptions().disable();

h2 console은 iframe을 사용한다고 한다. Spring security를 사용하면 http header에 X-Frame-Options가 추가되어 iframe으로 동작하던 기능이 정상적으로 동작하지 않아 생겼던 현상이었으며 위의 코드는 X-Frame-Options header를 추가하는 부분을 비활성화한 것이다.

설정을 마치고 Connect 버튼을 누르면 이제 준비 끝이다!

profile
Coding Duck

0개의 댓글