이번에는 h2 DB 연결방법을 포스팅해 본다.
h2 DB는 RDBMS 지만 in-memory 방식
이다.
즉, 인 메모리(in-memory) 데이터베이스의 경우, 데이터는 시스템 메모리에 저장되며 프로그램을 끄면 데이터가 없어져 버린다. 일반적으로 Test 용도로 빠르게 개발하기 위해, 쓰이는 데이터베이스로 많이 알려져 있다.
참고)
H2 데이터베이스의 GenerationType은SEQUENCE
이다.
@GeneratedValue(strategy = GenerationType.SEQUENCE)
- 데이터베이스 시퀀스는 유일한 값을 순서대로 생성하는 특별한 데이터베이스 오브젝트이다. SEQUENCE 전략은 이 시퀀스를 사용하여 기본키를 생성한다. 주로 오라클, PostgreSQL, DB2, H2 데이터베이스에서 사용할 수 있다.
https://hyeonic.tistory.com/m/196
runtimeOnly 'com.h2database:h2'
// test에서 lombok 사용
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
spring:
h2:
console:
enabled: true # H2 Console을 사용할지 여부 (H2 Console은 H2 Database를 UI로 제공해주는 기능)
path: /h2-console # H2 Console의 Path
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:~/test;MODE=MySQL;
username: sa
password:
Download > All Downloads > Archive Downloads
에 들어간다.
h2 데이터베이스 버전은 스프링 부트 버전에 맞춘다. - 현재 1.4.200
버전을 다운로드 받으면 된다.
다음 링크에 가면 다양한 H2 다운로드 버전을 확인할 수 있다.
https://www.h2database.com/html/download-archive.html
들어가는 방법은 설치완료후, Window 검색창에 H2-console
에 치면 들어가진다.
사용자명은 sa
입력
JDBC URL
에 다음 입력,
jdbc:h2:~/test (최초 한번)
이 경우 연결 시험
을 호출하면 오류가 발생한다. 연결 을 직접 눌러주어야 한다.
~/test.mv.db
파일 생성 확인
이후부터는 jdbc:h2:tcp://localhost/~/test
이렇게 접속할 수 있다.
⚠️ Connection 안될시, 직접 진행하시길!
h2.bat 직접 실행
트레이 아이콘에서 두번 클릭
test.mv.db
생성됨을 확인할 때는,
C:\Users\{사용자계정이름}
폴더에 있을 것이다.
⚠️ Security 문제
1) console localhost 연결 거부
해결방안)
Security Config 에 다음을 추가 (Security6버전)
// h2-console, 해당 페이지가 동일한 출처에서만 XFrame으로 로드될 수 있도록 설정
http
.headers(headers -> {
headers.addHeaderWriter(
new XFrameOptionsHeaderWriter(
XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN
)
);
// // X-Content-Type-Options 헤더 추가
// headers.contentTypeOptions();
// // X-XSS-Protection 헤더 추가
// headers.xssProtection();
});
스프링부트에서 application yml을 통해 간단하게 설정하는 방법
은 다음과 같다.
spring:
h2:
console:
enabled: true
jpa:
database-platform: org.hibernate.dialect.H2Dialect
open-in-view: false
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
spring:
h2:
console:
enabled: true
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:~/test;MODE=MySQL;
username: sa
password:
jpa:
database-platform: org.hibernate.dialect.H2Dialect
open-in-view: false
hibernate:
ddl-auto: create
properties:
hibernate:
show_sql: true
format_sql: true
프로젝트를 실행시 Run console에 JDBC URL
이 나오게 되있다.
H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:26b18340-687a-410e-9653-c8c5acf95356'
그리고
http://localhost:8080/h2-console 접속
Run console에 나온 JDBC URL을 입력한다.
드디어 h2 웹콘솔로 들어가진다.