H2?
H2는 오픈 소스 데이터베이스로, 자바로 작성된 관계형 데이터베이스 관리 시스템이다. 인 메모리와 파일 기반의 데이터베이스 설정이 가능해서 별로도 sql설치 없이도 사용할 수 있는 장점이 있다.
H2를 intellij에서 사용해 보자
1) h2 의존성 추가
h2를 사용하기 앞서, 사용하기 위한 의존성을 추가해야 줘야 한다.
ㅁ h2 - maven
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.197</version>
<scope>runtime</scope>
</dependency>
ㅁ h2- gradle
runtimeOnly 'com.h2database:h2'
의존성 버전은 spring reference에서 spring 버전에 맞는 종속성을 맞춰서 해주자.
프로젝트의 설정 파일 작성
resources 아래 properties 설정 파일에 아래의 내용을 등록한다.
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
- h2.console.enable : 웹 콘솔 사용
- h2.console.path : 콘솔의 경로
- spring.datasource.url : 접속 url, 위의 경우 인메모리 접속 방식이다. 파일을 사용하려면 아래와 같은 형식으로 선언해 설정한 파일 경로에서 사용하면 된다.(=spring.datasource.url=jdbc:h2:file:~/localdb/db)
실행해보자.
로컬 포트 주소와, 설정해놓은 h2.console.path인 h2-console로 접속을 하면 해당 h2 콘솔 창으로 접속된다. (http://localhost:8080/h2-console)
Database "mem:testdb" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (Help)
다음과 같은 오류가 뜬다면, version 설정이 잘 안되었기 때문이다. 의존성에서 버전 설정을 잘해줬는지 확인해볼 것!
h2 자동으로 스키마 생성하기
- h2는 인메모리로, 서버 재실행 시, 등록한 스키마 정보와 데이터들이 모두 사라진다!
- 스키마를 재설정하기는 귀찮으니 서버가 올라올 때 자동으로 스키마가 생성되게 만들어보자
resources 아래 schema~로 시작하는 sql문을 만들어 넣는다
- schema.sql
- 생성하고자 하는 스키마 정보
CREATE TABLE users(
seq bigint NOT NULL AUTO_INCREMENT,
email varchar(50) NOT NULL,
passwd varchar(80) NOT NULL,
login_count int NOT NULL DEFAULT 0,
last_login_at datetime DEFAULT NULL,
create_at datetime NOT NULL DEFAULT CURRENT_TIMESTAMP(),
PRIMARY KEY (seq),
CONSTRAINT unq_user_email UNIQUE(email)
);
데이터도 미리 넣어놓고 싶다면 resources 아래 data~로 시작하는 sql문을 만들어 놓으면 된다.
INSERT INTO users(seq,email,passwd) VALUES (null,'test@co.kr','1234');
서버를 재구동하면 자동으로 데이터가 생성된다.
'DevelopNote > 기타' 카테고리의 다른 글
[Git] 프로젝트 Repository Public <-> Private 전환 (0) | 2024.05.05 |
---|---|
[ajax] 새로 고침 없이 첨부 파일과 폼 데이터 전송하기 (0) | 2022.11.13 |
[.Net / Azure] azure blob storage에 파일 업로드 하기 (0) | 2022.06.13 |
parser 사이트, JSON 정렬, query 정렬 (0) | 2021.07.19 |
[MSSQL] - insert or update(있으면 업데이트 없으면 삽입) - exists (0) | 2021.07.03 |