Intellij에서 H2 연결

지니·2021년 7월 12일
0

대학생의 일기

목록 보기
4/17
post-custom-banner

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
post-custom-banner

0개의 댓글