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의 설치 경로를 알 수 있습니다.
설정하기
위에서 찾은 경로로 들어가 권한을 설정합니다.
// 제 파일 경로 예시입니다. 해당 경로로 들어간 후
✘ 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
그 후 아래의 이미지와 같이Saved Settings
와 JDBC URL
부분을 수정해 주세요
Generic H2 (Server)
jdbc:h2:tcp://localhost/~/test
저는 server로 데이터가 휘발되지 않는 용도로 사용하도록 하겠습니다.
아래와 같이 잘 접속되는 것을 알 수 있습니다.
문제 발생 시
h2를 처음 실행 시켰을 경우 위의 url 주소를 확인해 봅니다.
192.168.0.234
부분을 localhost
로 변경한 후 connect
버튼을 누릅니다.
아래의 이미지와 동일한지 확인합니다.
- url이 localhost로 되어 있는지
- Saved Settings가 Generic H2(Embedded)로 되어 있는지
모두 고생하셨습니다. 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
'Database' 카테고리의 다른 글
[DB] procedure에서 if문 사용하기 (0) | 2023.06.22 |
---|---|
[Server]Cluster (MariaDB:Galera Cluster, Oracle:Real Application Cluster) (0) | 2021.08.06 |