본문 바로가기

Backend/Spring

[환경 설정] 데이터 베이스 (DB) (H2)

1. 스프링 부트의 환경설정

 Spring Boot에서는 외부 설정파일(application.properties 또는 application.yml)을 사용하여 Application에 필요한 환경정보를 설정할 수 있다. 

 

 

 

2. 데이터 베이스 설정

 DB 연결 정보는 아래와 같이 설정한다.

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/D:/h2/anywhere
    username: sa
    password:
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: create-drop
  ...

reference - https://spring.io/guides/gs/accessing-data-mysql/

 

 

 

  2-1. H2 사용하기

Java 개발자가 개발 단계에서 애용하는 데이터베이스 중에 H2가 있다.

 

 H2는 크게 Application 내부에서 사용되는 Embedded Mode와 JDBC 등의 TCP 통신을 통해 사용되는 Server Mode로 구분된다. Java Application 개발을 위해 Server Mode 를 사용하면 되며 만약 Embedded Mode로 URL을 설정하면 Connection 관련하여 Error가 발생해서 Java Application이 실행되지 않는다.

 

발생 에러메시지

org.h2.jdbc.JdbcSQLNonTransientConnectionException: Database may be already in use: "D:/h2/anywhere.mv.db". 

Possible solutions: close all other connection(s); use the server mode [90020-214]

...

 

 

  2-2. 접속정보 (드라이버 클래스, URL 패턴, 사용자 정보)

- 드라이버 클래스 : org.h2.Driver

 

 

- URL 패턴

[Embedded mode]

    jdbc:h2:{path}/{name}      eg) jdbc:h2:~/test

 

[Server mode]

    jdbc:h2:tcp:{url}/{path}/name      eg) jdbc:h2:tcp://localhost/D:/h2/anywhere

 

* h2의 기본 경로(~)는 해당 PC의 사용자 경로 [ C:\Users\{User} ] 이다.

 

 

- 사용자 정보

 특정 버전 이후로 새로운 데이터베이스명으로 url 만 입력시 데이터베이스가 자동생성되지 않는다.

H2 Database Engine에서 우클릭을 통해 데이트베이스를 생성하고 이후 사용자 정보를 수정해서 비밀번호를 초기화하여 비밀번호 없이 사용할 수 있다. (생성할 때 비밀번호를 공란으로 두면 DB를 생성할 수 없다.)

   참고)   ALTER USER sa SET PASSWORD '';

 

 

 

 


 

[H2 - References]

http://h2database.com/html/features.html?highlight=server&search=server#firstFound 

 

[TCP 통신]

https://dongwooklee96.github.io/post/2021/04/20/tcp-%ED%86%B5%EC%8B%A0%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90....html