Database

[H2] h2 설치 및 사용하기

뱅타 2022. 2. 12. 15:48

h2를 자주 사용하지 않아 다시 설치하고 사용할 때마다 검색을 하게 되어 작성해 보려 합니다.

간단한 설치 방법과 사용법을 작성해 보겠습니다.

H2 DB?

oracle, mysql과 같은 relation DB입니다. 하지만 다른 DB들과 달리 가볍고 설치가 쉽고, 관리가 편하기 때문에 가벼운 사이드 프로젝트나 테스트 용으로 많이 사용됩니다.

특징

  • 빠르고 오픈소스인 JDBC API
  • In Memory DB(인 메모리 DB)*
  • Embedded mode(내장모드) & Server mode(서버모드) 지원
  • 브라우저 기반 콘솔 프로그램
  • 2MB정도의 적은 용량으로 설치 가능
  • ANSI 표준 SQL로 여러 호환성 모드 지원

Embedded Mode vs Server Mode

Embedded mode(내장모드) : Application 서버 실행 종료시 데이터 모두 휘발됩니다.

  • H2를 Application과 동일한 JVM을 이용하여 구동, Application이 종료되면 Data가 모두 손실(휘발) - 영속적이지 않음
  • 데이터의 휘발성으로 테스트 시 자주 사용

Server mode(서버모드) : Application 서버 종료시에도 지속적으로 해당 데이터를 사용

  • 별도의 JVM을 이용하여 구동 (localhost:9092) - 영속적으로 사용할 수 있음
  • 여러 Application이 해당 H2에 동시 접근 가능
  • Application과는 TCP/IP 통신
    • 내부적으로는 Embedded mode와 동일한 실행 방식을 갖지만, TCP/IP 통신으로 속도가 상대적으로 느림

설치하기(Mac)

  • zip(or Windows)

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

위의 경로에서 직접 원하는버전의 h2DB를 Windows Installer 혹은 Platform-Independnt Zip 파일을 받아 설치하시면 됩니다.

  • Homebrew

https://formulae.brew.sh/formula/h2

Homebrew를 사용하시면 terminal에서 아래의 명령어로 설치하면 됩니다.

brew install h2

특정버전의 h2를 굳이 brew로 설치하고 싶다면 여기의 링크를 참고해주세요(h2는 구버전을 패키지별로 구분하지 않아 brew로 특정 버전 설치 시 다른 방법이 필요합니다.)

  • 경로 찾기

아래와 같이 where command로 h2의 설치 경로를 알 수 있습니다.

image-20220212151934757

설정하기

위에서 찾은 경로로 들어가 권한을 설정합니다.

image-20220212152944343

// 제 파일 경로 예시입니다. 해당 경로로 들어간 후
✘ eisen😝  ~/Documents/Github/TIL   main ±
cd /opt/homebrew/opt/h2/bin


// chmod 755로 권한을 설정합니다.
eisen😝  /opt/homebrew/opt/h2/bin   stable
chmod 755 h2

// 실행하기
h2

그 후 h2 명령으로 h2를 실행시켜 줍니다.(버전에 따라 h2.sh command를 사용하기도 합니다.)

DB 생성 및 h2 접속하기

Embedded로 db를 생성 한 후 재접속합니다.

권한 문제 때문에 tcp로 접근하면, 데이터베이스가 없는 경우 자동 생성하지 않습니다.

이유는 여기의 링크를 참고해 주세요.

DB 생성하기

h2 실행 시 아래의 이미지와 같은 화면이 뜹니다. 이 때 connect를 한번 눌러주세요.

http://www.h2database.com/html/tutorial.html#creating_new_databases

image-20220210090130258

그 후 아래의 이미지와 같이Saved SettingsJDBC URL 부분을 수정해 주세요

Generic H2 (Server)

jdbc:h2:tcp://localhost/~/test

image-20220212154001648

저는 server로 데이터가 휘발되지 않는 용도로 사용하도록 하겠습니다.

아래와 같이 잘 접속되는 것을 알 수 있습니다.

image-20220212154219249

문제 발생 시

h2를 처음 실행 시켰을 경우 위의 url 주소를 확인해 봅니다.

image-20220210090417462

192.168.0.234 부분을 localhost로 변경한 후 connect 버튼을 누릅니다.

image-20220210090447221

아래의 이미지와 동일한지 확인합니다.

  1. url이 localhost로 되어 있는지
  2. Saved Settings가 Generic H2(Embedded)로 되어 있는지

image-20220210090512313

모두 고생하셨습니다. h2를 활용한 즐거운 코딩 되시길 바랍니다.

References

https://jamie95.tistory.com/188

https://velog.io/@doobyeol/H2-DB

https://youngbae10000.tistory.com/51

https://www.inflearn.com/questions/11283

http://www.h2database.com/html/tutorial.html#creating_new_databases

728x90
반응형