H2 데이터베이스 연결
환경
- m1 macos
- Sonoma 14.1.1
목표
- 도커 컨테이너로 H2 데이터 베이스 실행
- 스프링부트 프로젝트와 연결
1
2
3
4
5
6
7
8
9
# 도커 run 명령어로 이미지 다운로드
docker run -d -p 1521:1521 -p 81:81 \
-v /Users/jeongjin/Documents/h2:/opt/h2-data \
--name=h2 \
-e H2_OPTIONS="-ifNotExists" \
oscarfonts/h2
# 실행결과
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63a250d87b70 oscarfonts/h2 "/bin/sh -c 'java -c…" 33 seconds ago Up 32 seconds 0.0.0.0:81->81/tcp, 0.0.0.0:1521->1521/tcp h2
주의점은 -e H2_OPTIONS="-ifNotExists"
해당 옵션이 꼭! 필요하다. 그렇지 않고 실행하면, db 에 접속도 할 수 없고, 터미널에서 db 를 생성할 수 없다.
개발자는 무조건 터미널에서 작업하는 것이 미덕으로 느껴지지만, GUI 의 힘을 빌려 손쉽게 시작할 수 있다.
일단, docker run
커맨드가 아닌 docker pull
로 이미지만 다운로드 받고, 원하는 설정을 넣어서 실행시킬 수 있다. 터미널 사용이 강제되는 것이 아니라면 GUI 를 이용하는 것이 오타 등 휴먼에러를 줄일 수 있지 않나 싶다.
(각설) 설정을 바꾸지 않았다면, localhost:81
로 접속할 수 있다.
H2
를 TCP
연결로 사용하기 위해서는 다음과 JDBC URL
을 다음과 같이 지정한다.
jdbc:h2:tcp://localhost:1521/${DB 이름}
처음엔 test
라는 db 가 생성되어 있다. 필요한 db 를 생성하는 방법은 2가지가 있다.
브라우저에서 생성
너무 간단한데, 연결을 Server 로 두고 jdbc:h2:tcp://localhost:1521/${DB 이름}
라고 하고 연결을 하면 db 가 생긴다.
가령, jdbc:h2:tcp://localhost:1521/db_fruit
이라고 입력해보자.
도커 컨테이너 내에서 확인해보면,
1
2
3
4
5
6
7
8
9
root@e203d58f5a06:/opt/h2-data# ls -al
total 112
drwxr-xr-x 6 root root 192 Nov 11 15:00 .
drwxr-xr-x 1 root root 4096 Apr 24 2023 ..
# 웹에서 입력한 db 가 생성되었다.
-rw-r--r-- 1 root root 16384 Nov 11 15:00 db_fruit.mv.db
-rw-r--r-- 1 root root 32768 Nov 11 14:56 db_order.mv.db
-rw-r--r-- 1 root root 32768 Nov 11 14:57 db_product.mv.db
-rw-r--r-- 1 root root 28672 Nov 11 14:57 test.mv.db
터미널에서 생성
/opt/h2/bin
경로에 h2-2.1.214.jar 파일을 실행한다.
java -cp h2-2.1.214.jar org.h2.tools.Shell
jdbc:h2:tcp://localhost:1521/${생성하고자 하는 db 이름}
org.h2.Driver
- User (접속할 아이디)
- Password (접속할 비밀번호)
값을 입력하면 db 가 생성된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
root@e203d58f5a06:/opt/h2/bin# java -cp h2-2.1.214.jar org.h2.tools.Shell
Welcome to H2 Shell 2.1.214 (2022-06-13)
Exit with Ctrl+C
[Enter] jdbc:h2:tcp://localhost:1521/test
URL jdbc:h2:tcp://localhost:1521/db_product
[Enter] org.h2.Driver
Driver org.h2.Driver
[Enter] sa
User sa
Password
Type the same password again to confirm database creation.
Password
Connected
Commands are case insensitive; SQL statements end with ';'
help or ? Display this help
list Toggle result list / stack trace mode
maxwidth Set maximum column width (default is 100)
autocommit Enable or disable autocommit
history Show the last 20 statements
quit or exit Close the connection and exit
sql> quit
This post is licensed under CC BY 4.0 by the author.