H2 데이터베이스의 Connection mode

2023. 7. 4. 12:55DB

728x90

H2 데이터베이스 콘솔을 실행시켜보면, Save Settings에 Embedded와 Server라 써있는 것을 본적 있을 것이다.

그렇다면, Embedded와 Server는 각각 어떤 장단점이 있을까???

 

Embedded 모드

 

애플리케이션이 JDBC를 사용하여 동일한 JVM 내에서 데이터베이스를 연다.

 

 

이 방식의 특징은 다음과 같다.

 

  • 가장 빠르고 쉬운 연결 모드이다.
  • 한 번에 하나의 가상머신 및 클래스 로더에서만 열릴 수 있다.
    • 다중 스레드 환경에서 동시에 여러 작업을 수행하기가 어렵다.
      • 다중 스레드 환경은 동시에 여러 개의 스레드가 실행되는 환경인 데, 이를 쉽게 말해면 동시에 여러 작업이 처리된다. == 즉, 동시에 여러 요청이 들어온다!
  • 애플리케이션의 스레드가 데이터베이스에 대한 입출력 작업을 수행한다.
    • 스레드가 데이터베이스에 대한 입출력 작업을 수행 중 종료된다면, 데이터베이스의 무결성을 해칠 수 있다.
      • 예외 발생 시 또는 강제적으로 서버가 종료될 때 등등..

 

Embedded모드를 사용할 때는 아래와 같은 형식의 url을 사용한다.

 

jdbc:h2:mem:test

 

그리고, 서버를 돌린 후 아래의 url로 접속하면 h2 console이 나온다.

 

http://localhost:8080/h2-console

 

Server 모드

 

서버 모드는 애플리케이션이 JDBC 또는 ODBC API를 사용하여 원격으로 데이터베이스를 연다.

 

 

이 방식의 특징은 다음과 같다.

 

  • 여러 애플리케이션을 해당 데이터베이스에 동시적으로 연결할 수 있다.
  • 모든 데이터 처리가 TCP/IP를 통하여 전송되기때문에 Embedded 모드보다 상대적으로 느리다.

 

Server 모드를 사용할 때는 아래와 같은 형식의 url을 사용한다.

 

jdbc:h2:tcp://localhost/~/test

 

결론

그렇다면, 로컬에서 개발시에는 어떤 모드를 사용해야할 까??

 

현재 필자는 카카오에서 주관하는 카카오테크캠퍼스(부트캠프??)에서 공부 중이다.

카카오테크캠퍼스 실습 매니저님께 다음과 같은 질문을 하였다. 그리고 아래와 같은 답변을 받았다.

 

 

 

로컬에서 개발 시에는 Embedded 모드를 사용하자!!

 

728x90