Home > DB > ๐Ÿ’พ[Database] H2 Database๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๐Ÿ’พ[Database] H2 Database๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?
Database

๐Ÿ’พ[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
com.h2database h2 runtime

### 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๋Š” ๊ฒฝ๋Ÿ‰์„ฑ๊ณผ ํŽธ์˜์„ฑ์„ ๊ฐ–์ถ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ, ์ฃผ๋กœ ๊ฐœ๋ฐœ๊ณผ ํ…Œ์ŠคํŠธ์— ์ตœ์ ํ™”๋œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • ๋น ๋ฅธ ํ”„๋กœํ† ํƒ€์ดํ•‘ ๋ฐ ํ•™์Šต ํ™˜๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ ํ™œ์šฉํ•˜๋ฉด ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.