작성
·
210
0
url: jdbc:h2:tcp://localhost/~/myShopProject
이런 url 예시가 있으며 tcp 방식을 통해 네트워크 통신을 이용하여 서버의 디스크에 저장하는 것으로 이해했습니다.위의 경우는 localhost이므로 저의 로컬 컴퓨터의 디스크에 저장될 것 같습니다.만약 위의 localhost가 다른 ip라면 그 ip의 디스크에 저장될 것 같습니다. jdbc:h2:<databasePath>
jdbc:h2:mem:mydb
답변 2
2
안녕하세요. ml505050님, 공식 서포터즈 David입니다.
공식문서에 따르면 (connection) Mode는 3가지입니다.
Embedded Mode, Server Mode, Mixed Mode
임베디드 모드에 괄호치고 메모리 모드라고 적어놓은 이유는 임베디드 모드의 동작때문인 것 같습니다.
임베디드 모드는 데이터베이스를 애플리케이션과 같은 JVM에서 띄워서 사용합니다. 당연히 애플리케이션이 종료되면 H2 데이터베이스도 함께 종료됩니다. 이런 과정을 쉽게 이해할 수 있도록 임베디드 모드와 메모리 모드를 병기한 것 같습니다.
참고로 임베디드 모드는 임베디드 데이터베이스와 인메모리 데이터베이스를 모두 지원합니다.
이 부분은 공식문서를 참고해 주세요:)
https://www.h2database.com/html/features.html#connection_modes
https://www.h2database.com/html/features.html#embedded_databases
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
ml505050님께서 질문하신 H2 데이터베이스의 임베디드 모드와 인메모리 모드에 대한 혼동에 대해 설명드리겠습니다.
임베디드 모드(Embedded Mode)와 인메모리 모드(In-Memory Mode)는 H2 데이터베이스를 구동하는 두 가지 다른 방식입니다.
jdbc:h2:mem:mydb
)에서는, 데이터베이스가 애플리케이션의 메모리 내에서만 존재하며, 애플리케이션이 종료되면 데이터가 사라집니다. 이 모드는 주로 테스트 환경에서 데이터베이스의 빠른 초기화와 소멸이 필요할 때 사용됩니다.databasePath
)을 저정하여 영구적으로 데이터를 저장할 수 있습니다. 이 모드는 서버 인스턴스 없이 독립적인 애플리케이션으로 데이터베이스를 포함하고자 할 때 사용됩니다.교재에서 “임베디드 모드(메모리 모드)“라고 설명된 부분은 이해의 혼동을 일으킬 수 있습니다. 실제로는 “임베디드 모드”가 메모리 내에서 데이터를 유지하는 “인메모리 모드”의 특성을 가지면서도 애플리케이션과 함께 동작한다는 점을 강조한 것으로 보입니다.
이와 유사한 질문에 대한 답변을 아래 링크에서 확인하실 수 있습니다:
- 인메모리 DB h2에서는 H2 인메모리 데이터베이스가 JVM 내에서 메모리 모드로 작동함을 설명합니다.
강의 테스트 도중 한가지 db에 대해서 한가지 궁금한게 생겨 질문남깁니다!에서는 로컬 DB로 테스트할 수 있는 방법과 인메모리 데이터베이스의 활용에 대해 설명합니다.
이전 임베디드 데이터베이스와 mem:testdb에서는 인메모리 데이터베이스의 활용 및 테스트에 대한 실제 예시를 설명합니다.
h2 설치 후 jar 파일 실행 시에서는 H2 데이터베이스의 인메모리 모드와 서버 모드의 차이 및 사용 방법에 대해서 설명하고 있습니다.
이 내용이 ml505050님의 질문에 대한 혼동을 해소하는데 도움이 되기를 바랍니다. 임베디드 모드와 인메모리 모드 각각의 정의와 사용 사례를 명확히 이해함으로써, db를 어떻게 구성하고 활용해야 할지 더욱 명확해질 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!