| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 이스케이프 문자
- Selection Sorting
- list 컬렉션
- 이것이 자바다
- 윤성우 열혈자료구조
- 혼자 공부하는 C언어
- 메모리구조
- stream
- coding test
- Graph
- buffer
- C programming
- datastructure
- R
- 윤성우의 열혈 자료구조
- Algorithm
- JSON
- 알기쉬운 알고리즘
- Serialization
- Stack
- insertion sort
- C 언어 코딩 도장
- s
- Today
- Total
Engineering Note
[Database] H2 다운로드 및 실행방법과 실행 모드 본문
학습을 위해 인프런 강의를 듣다가 h2 데이터베이스 접속 방법이 매번 헷갈려서 정리해두려고 작성한 글이다.
1.H2 다운로드 및 실행방법
1-1. H2 데이터베이스 엔진 DBMS를 다운로드 한다.
https://www.h2database.com/html/main.html
1-2. 다운로드 하고 압출을 풀어주면 안에 bin 디렉터리가 있는데 그 안에 h2.sh 파일이 있다.
1-3. h2.sh 파일의 권한을 준다. 'chmod 755 h2.sh`. 권한 변경 후 실행(터미널에서 './h2.sh ' 입력)하면 브라우저에 h2데이터베이스 접속을 위한 웹 콘솔이 열린다.
1-4. h2 데이터베이스는 메모리모드와 파일모드가 있는데, 데이터를 유지하기 위해서 파일모드로 실행하고 싶으면 파일 모드로 실행하면 된다. 웹 콘솔에 접속해서 최초 한 번 연결을 해주면 데이터베이스 파일이 생성된다.
1-5. jdbc URL에 아래 그림처럼 `jdbc:h2:~/querydsl' 을 입력해주고 연결하면 루트(~)디렉터리에 querydsl.mv.db라는 파일이 생성된다.

1-6. 그다음 다시 연결은 종료하고 연결 방식을 네트워크 접속 방식으로 바꿔주어야 한다. 파일모드로 접속하면 동시접속이 안되기 때문에 애플리케이션과 브라우저 콜솔로 동시에 DB에 접속할 수 없다.
1-7. tcp 네트워크 접속 방법

아래는 h2 데이터베이스의 실행 모드 원리를 정리한 내용이다. h2 데이터베이스는 크게 저장 방식과 접속 방식의 관점에서 실행 모드를 이해할 수 있다.
2. H2 실행 모드 이해하기
H2는 저장 방식과 접속 방식 2가지 축으로 구성됩니다.
저장 방식 (어디에 저장?)
파일 모드
jdbc:h2:~/test
- 디스크에 영구 저장
- 재시작해도 데이터 유지
- test.mv.db 파일 생성
메모리 모드
jdbc:h2:mem:test
- RAM에만 저장
- 종료 시 데이터 삭제
- 빠른 속도, 테스트용
접속 방식 (어떻게 접속?)
임베디드 모드
jdbc:h2:~/test
- 앱 내부에서 직접 접속
- 하나의 앱만 사용 가능
- 가장 빠름
서버 모드
jdbc:h2:tcp://localhost/~/test
- 별도 서버로 실행
- 여러 앱 동시 접속 가능
- 네트워크 통신
혼합 모드
jdbc:h2:~/test;AUTO_SERVER=TRUE
- 첫 접속은 임베디드, 추가 접속 시 자동으로 서버 모드
- 가장 편리함
참고 사항
만약 이미 h2데이터베이스가 설치되어 있다면 아래 명령어로 찾을 수 있다.
find ~ -name "h2.sh" 2>/dev/null
2:linux/unix/mac 계열 표준 에러메세지를 의미하는 번호입니다.
>:리다이렉트
/dev/null : 데이터를 저장하지 않고 버린다는 의미
'권한이 없다'등 에러메세지를 표시하지 않고 파일을 찾기위해 지정하는 명령어입니다.
'Computer Science > Database' 카테고리의 다른 글
| [Database] FLUSH와 COMMIT 차이 (0) | 2025.10.07 |
|---|---|
| [Database] MySQL, SQL JOIN 완벽 정리: INNER JOIN vs LEFT JOIN (0) | 2025.10.05 |
| [Database] MySQL 외래키 예외 (0) | 2025.10.05 |
| [Database] 게시판 테이블 만들기 SQL (0) | 2025.10.04 |
| [Database] SQL 문법 정리 (0) | 2025.09.25 |