1. TCP(server) 모드 - jdbc:h2:tcp://localhost...
터미널에서 ./h2.sh 을 실행하여 직접 데이터베이스 어플을 실행시킨다.

-> yml의 url에서 jdbc:h2:tcp://localhost.. 를 입력해야한다.
2. Embedded 모드 - jdbc:h2:~/...
3. MEM 모드 - jdbc:h2:mem:...
📌 최종 비교표
| 모드 | 데이터 저장 방식 | 애플리케이션 종료 후 데이터 유지 | 멀티 프로세스 접근 | 속도 |
|---|---|---|---|---|
| TCP(Server) 모드 | 파일(.mv.db) | ✅ 유지됨 | ✅ 여러 애플리케이션 가능 | ⬇ 느림 (네트워크 필요) |
| Embedded(임베디드) 모드 | 파일(.mv.db) | ✅ 유지됨 | ❌ 단일 애플리케이션만 사용 가능 | ⬆ 빠름 (로컬 접근) |
| MEM(메모리) 모드 | 메모리(RAM) | ❌ 유지 안됨 | ❌ 단일 애플리케이션만 사용 가능 | 🚀 가장 빠름 |
📌 언제 어떤 모드를 사용해야 할까?
| 상황 | 추천 모드 | 이유 |
|---|---|---|
| 운영 환경 (실제 서비스 배포) | TCP(Server) 모드 | 여러 애플리케이션에서 같은 DB 접근 가능, 데이터 유지됨 |
| 로컬 개발 환경 (파일 기반 데이터 저장) | Embedded 모드 | 단일 애플리케이션에서 사용, 데이터 유지됨 |
| 테스트 환경 (테스트 실행 시마다 초기화됨) | MEM(메모리) 모드 | 빠르고 테스트 종료 후 자동 삭제됨 |
🚀 결론
운영 환경에서는 TCP(Server) 모드를 사용하여 여러 애플리케이션이 동일한 DB를 공유하도록 설정.
로컬 개발 환경에서는 Embedded 모드를 사용하여 쉽게 데이터베이스를 유지하면서 개발 가능.
테스트 환경에서는 MEM 모드를 사용하여 빠른 테스트 실행과 자동 초기화가 가능.