티스토리 뷰

Dependency( Gradle )

implementation 'com.h2database:h2'

H2 embedded 모드

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    username: sa
    driver-class-name: org.h2.Driver
  h2:
    console:
      enabled: true

H2 file 모드

Test 코드에서는 file에 데이터가 남지 않는다.

그냥 앱 실행을 하면, file에 데이터가 남아 있다.

그리고 Test 코드에서 ddl-auto를 create 로 했는데, 실제 테스트 돌아갈때 drop table을 하는데도 기존 데이터가 날아가지 않고 있다

앱 실행 시에는 drop 해서 파일에 있는 것이 다 날아감.

테스트 모드에서 실행하면, 임베디드 상태로 돌아가는것 처럼 보임.

H2 Server 모드

서버모드로 동작 하기 위해서는 H2 데이터베이스를 별도로 띄워주어야 합니다.

아래 방법을 따라서 먼저 설치 및 H2 데이터베이스를 수행해줍니다.

최신 버전 설치( Mac 기준 )

터미널에서 아래 명령어로 h2를 설치하고 실행합니다.

# h2 설치
$ brew install h2

# h2 실행
$ h2

 

브라우저에서 localhost:8082로 접속하면, 아래와 같은 접속 화면이 뜹니다.

Connect를 눌러 연결합니다.( test 라는 데이터 베이스가 생성되며 접속이 됩니다. )

연결하면 데이터베이스를 조회하고 쿼리를 수행할 수 있는 화면이 나옵니다.

Generic H2 (Embedded) 로 먼저 데이터베이스를 생성해 두지 않으면, Generic H2 (Server)나 외부 애플리케이션에서 서버모드로 접속시 아래 콘솔화면 같이 에러가 나거나 애플리케이션에서도 비슷한 문구의 에러가 발생하게 됩니다.

org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database "/Users/xxxx/testdb" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200]

Spring

아래와 같이 application.yml 을 설정해 어플리케이션을 실행해주면 됩니다.

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/testdb
    username: sa
    driver-class-name: org.h2.Driver

그리고 H2 콘솔에서 데이터 베이스를 조회해보면 데이터가 잘 들어갔는지 확인이 가능합니다.

 

 

 

참고로, 현재 최신 버전은 1.4.200 이고, 최신 안전화 버전은 1.4.199 입니다.

해당 버전은 아래 링크로 접속하여 설치 가능합니다.

https://www.h2database.com/html/download.html

h2database download page

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함