๐พ[Database] H2 Database๋ ๋ฌด์์ธ๊ฐ์?
-
H2 Database๋ Java๋ก ๊ตฌํ๋ ์คํ ์์ค์ ๊ฒฝ๋ํ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS) ์
๋๋ค.
- ์ฃผ๋ก ํ ์คํธ ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋น ๋ฅด๊ณ ๊ฐํธํ๊ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ ๋ ํ์ฉ๋ฉ๋๋ค.
- H2๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋๋ ํ์ผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ ์ ์์ด, ์ค์น ๊ณผ์ ์์ด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ฅํ์ฌ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด ํน์ง์ ๋๋ค.
1๏ธโฃ H2 Database์ ์ฃผ์ ํน์ง.
1๏ธโฃ ๊ฒฝ๋์ฑ(Lightweight)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ํฌ๊ธฐ๊ฐ ์๊ณ ๋น ๋ฅด๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ผ๋ก ๋์ ์ ๋งค์ฐ ๋์ ์ฑ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
2๏ธโฃ Java๋ก ๊ตฌํ.
- Java๋ก ์์ฑ๋์ด Java ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํตํฉ์ด ์ฉ์ดํ๋ฉฐ, ํ๋ซํผ ๋ ๋ฆฝ์ ์ ๋๋ค.
3๏ธโฃ ๋ด์ฅํ ๋ฐ ๋ ๋ฆฝํ.
1๏ธโฃ ๋ด์ฅํ ๋ชจ๋(Embedded mode)
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด์ฅ๋์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ํจ๊ป ์คํ.
2๏ธโฃ ๋ ๋ฆฝํ ๋ชจ๋(Server mode)
- ๋ ๋ฆฝ๋ ์๋ฒ๋ก ๋์ํ๋ฉฐ, ๋ค๋ฅธ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ ๊ฐ๋ฅ.
4๏ธโฃ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ฐ ๋์คํฌ ๊ธฐ๋ฐ.
- ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ชจ๋์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ ์ด๊ณ ์ ์ฑ๋ฅ ์ ๊ณต(์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ ์ ๋ฐ์ดํฐ ์๋ฉธ).
- ๋์คํฌ ๊ธฐ๋ฐ ๋ชจ๋์์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ ์ฅํ์ฌ ์ง์์ฑ์ ์ ์ง.
5๏ธโฃ SQL ํ์ค ์ค์.
- SQL ํ์ค์ ์ง์ํ๋ฉฐ, ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฌํ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
6๏ธโฃ ์น ์ฝ์ ์ ๊ณต.
- ์ฌ์ฉํ๊ธฐ ํธ๋ฆฌํ ์น ๊ธฐ๋ฐ ๊ด๋ฆฌ ์ฝ์์ ์ ๊ณตํ์ฌ SQL ์ฟผ๋ฆฌ ์คํ ๋ฐ ๋ฐ์ดํฐ ํ์ธ ๊ฐ๋ฅ.
7๏ธโฃ ์คํ ์์ค.
- Apache 2.0 ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅ.
2๏ธโฃ H2 Database์ ์ฃผ์ ํ์ฉ.
1๏ธโฃ Spring Boot์์ ํตํฉ.
- Spring Boot์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ค์ ๋์ด ๊ฐ๋ฐ ๋ฐ ํ ์คํธ ํ๊ฒฝ์์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
- application.properties์ ์ค์ ์ ์ถ๊ฐํ๋ฉด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
2๏ธโฃ ๋จ์ ํ ์คํธ.
- ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์์ด H2๋ฅผ ์ฌ์ฉํด ํ ์คํธ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
3๏ธโฃ ๋น ๋ฅธ ํ๋กํ ํ์ดํ.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ด๊ธฐ ๋จ๊ณ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ๋ฅผ ๋น ๋ฅด๊ฒ ์คํํ๊ณ ๊ฒ์ฆํ ์ ์์ต๋๋ค.
4๏ธโฃ ํ์ต์ฉ.
- ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ SQL ํ์ต์ ์ ํฉํฉ๋๋ค.
3๏ธโฃ H2 Database ์ค์ ์์.
1๏ธโฃ Maven Dependency ์ถ๊ฐ.
- H2 Database๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด Maven ํ๋ก์ ํธ์ ๋ค์ ์์กด์ฑ์ ์ถ๊ฐํฉ๋๋ค.
```xml
### 2๏ธโฃ Spring Boot ์ค์ .
- Spring Boot์์๋ `application.properties` ๋๋ `application.yml` ํ์ผ์ H2 ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
```properties
# H2 Database ์ค์
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=""
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
-
spring.datasource.url=jdbc:h2:mem:testdb
: ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. -
spring.h2.console.enabled=true
: H2 ์ฝ์์ ํ์ฑํํฉ๋๋ค. -
spring.h2.console.path=/h2-console
: H2 ์ฝ์์ ์ ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค.
3๏ธโฃ H2 ์น ์ฝ์ ์ ์
- ์ ํ๋ฆฌ์ผ์ด์
์ ์คํํ ํ, ๋ธ๋ผ์ฐ์ ์์
http://localhost:8080/h2-console
๋ก ์ ์ํฉ๋๋ค. -
JDBC URL :
jdbc:h2:mem:testdb
-
User Name :
sa
-
Password :
""
4๏ธโฃ H2 ์ฌ์ฉ ์ ์ฃผ์ ์ฌํญ.
1๏ธโฃ ๋ฐ์ดํฐ ์์์ฑ.
-
๋ฉ๋ชจ๋ฆฌ ๋ชจ๋์์๋ ์ ํ๋ฆฌ์ผ์ด์
์ข
๋ฃ ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ผ์ง๋ฏ๋ก, ์์์ฑ์ ์ ์งํ๋ ค๋ฉด ํ์ผ ๊ธฐ๋ฐ (
jdbc:h2:file:~/testdb
)์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
2๏ธโฃ ์ด์ ํ๊ฒฝ์์๋ ๋ถ์ ํฉ.
- H2๋ ์ฃผ๋ก ๊ฐ๋ฐ ๋ฐ ํ
์คํธ ํ๊ฒฝ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ด์ ํ๊ฒฝ์์๋ MySQL, PostgreSQL, Orcle ๋ฑ ๋ ๊ฐ๋ ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
3๏ธโฃ ๋์์ฑ ์ ํ.
- ๋จ์ผ ์ฌ์ฉ์ ๋๋ ์๊ท๋ชจ ๋์ ์์ ์๋ ์ ํฉํ์ง๋ง, ๋ง์ ํธ๋์ญ์ ์ด ํ์ํ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์์ต๋๋ค.
5๏ธโฃ H2 Database์ ์ฅ์ .
- ๊ฐ๋จํ ์ค์ ๊ณผ ์ฌ์ฉ์ฑ.
- ๋น ๋ฅธ ์ฑ๋ฅ(ํนํ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋).
- SQL ํ์ค ์ค์๋ก ํ์ต ๋ฐ ํ๋กํ ํ์ดํ์ ์ ํฉ,
- Spring Boot์์ ์๋ฒฝํ ํธํ์ฑ.
6๏ธโฃ H2 Database์ ๋จ์ .
- ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ฐ ๋ณต์กํ ํธ๋์ญ์ ์ฒ๋ฆฌ์ ํ๊ณ.
- ์ด์ ํ๊ฒฝ์์๋ ์ ํฉํ์ง ์์.
- ์์์ฑ ๊ด๋ฆฌ๊ฐ ๋ถ์กฑ(๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ ๋ชจ๋ ์ฌ์ฉ ์).
7๏ธโฃ ๊ฒฐ๋ก .
- H2 Database๋ ๊ฒฝ๋์ฑ๊ณผ ํธ์์ฑ์ ๊ฐ์ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ์ฃผ๋ก ๊ฐ๋ฐ๊ณผ ํ ์คํธ์ ์ต์ ํ๋ ๋๊ตฌ์ ๋๋ค.
- ๋น ๋ฅธ ํ๋กํ ํ์ดํ ๋ฐ ํ์ต ํ๊ฒฝ์ด ํ์ํ ๋ ํ์ฉํ๋ฉด ํจ์จ์ ์ ๋๋ค.