JPA와 SpringSecurity를 공부하면서, H2 데이터베이스를 사용해 보았습니다. 처음에는 강사님께서 알려주시는 설정 그대로 사용하다가, JPA공부할 때는 로컬 H2 데이터베이스에서 정보 확인이 가능하였지만, SpringSecurity 공부할 때 가능하지 않았습니다. 띠용!!!
그래서 H2 데이터베이스 URL에 대해 공부해 보았으며, 활용에 좋은 정보만 기록해 보았습니다.
사용할 상황 | URL | 예시 |
---|---|---|
임베디드 로컬 연결 | jdbc:h2:[file:][<path>] | jdbc:h2:~/test jdbc:h2:file:/data/sample jdbc:h2:C:/data/sample (<- Windows일 경우에만 한정) |
인메모리(비공개) | jdbc:h2:mem: | |
인메모리 (데이터베이스 이름 지정) | jdbc:h2:mem: | jdbc:h2:mem:test |
원격연결 (TCP/IP 사용) | jdbc:h2:tcp://[:]/[ | jdbc:h2:tcp://localhost/~/test jdbc:h2:tcp://localhost:8084/~/test jdbc:h2:tcp://localhost/mem:test |
원격연결 (TLS 사용) | jdbc:h2:ssl://:[:]/[ | jdbc:h2:ssl://localhost:8084/~/test; |
사용할 상황 | 키워드 | 예시 |
---|---|---|
암호화된 파일 사용을 사용할 경우 | CIPHER (jdbc:h2:;CIPHER=AES) | jdbc:h2:ssl://localhost/~/test;CIPHER=AES jdbc:h2:file:~/test;CIPHER=AES |
데이터 베이스가 이미 존재하는 경우에만 데이터 베이스를 사용하고 싶을 경우 | IFEXISTS (jdbc:h2:;IFEXISTS=TRUE) | jdbc:h2:file:~/test;IFEXISTS=TRUE |
log 파일 레벨을 설정하고 싶을 경우 | TRACE_LEVEL_FILE (jdbc:h2:;TRACE_LEVEL_FILE=<level 0..3>) → 0 : OFF → 1 : ERROR → 2 : INFO → 3 : DEBUG | jdbc:h2:file:~/test;TRACE_LEVEL_FILE=3 |
연결할 때 바로 SQL 실행하고 싶을 경우 | INIT=RUNSCRIPT FROM (jdbc:h2:;INIT=RUNSCRIPT FROM '<sql파일 위치>' ) | jdbc:h2:file:~/test;INIT=RUNSCRIPT FROM '~/create.sql'\;RUNSCRIPT FROM '~/dummy.sql' |
호환 모드 사용하고 싶을 경우 | MODE (jdbc:h2:;MODE=) | jdbc:h2:~/test;MODE=MYSQL;DATABASE_TO_LOWER=TRUE |
연결이 끊겼을 시, 자동 재연결을 원하는 경우 | AUTO_RECONNECT (jdbc:h2:;AUTO_RECONNECT=TRUE) → 단, 자동 커밋이 활성화 된 경우에만 발생합니다. 만약 자동 커밋이 활성화 되어 있지 않다면, 예외가 발생한다고 합니다. | jdbc:h2:tcp://localhost/~/test;AUTO_RECONNECT=TRUE |
(h2 데이터베이스는 테스트용으로 주로 사용되기 때문에, 간단하게 실험해 보았습니다.)
users
,authorities
테이블을 생성합니다.users
,authorities
테이블 생성users
,authorities
테이블 생성<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
<scope>runtime</scope>
</dependency>
spring:
datasource:
driver-class-name: org.h2.Driver
url: "jdbc:h2:~/test;MODE=MYSQL;DB_CLOSE_DELAY=-1"
username: test
password: test
...
spring:
datasource:
driver-class-name: org.h2.Driver
url: "jdbc:h2:mem:;MODE=MYSQL;DB_CLOSE_DELAY=-1"
username: test
password: test
...
spring:
datasource:
driver-class-name: org.h2.Driver
url: "jdbc:h2:mem:test;MODE=MYSQL;DB_CLOSE_DELAY=-1"
username: test
password: test
...
https://www.h2database.com/html/features.html#auto_reconnect