πΎ[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λ κ²½λμ±κ³Ό νΈμμ±μ κ°μΆ λ°μ΄ν°λ² μ΄μ€λ‘, μ£Όλ‘ κ°λ°κ³Ό ν μ€νΈμ μ΅μ νλ λꡬμ λλ€.
- λΉ λ₯Έ νλ‘ν νμ΄ν λ° νμ΅ νκ²½μ΄ νμν λ νμ©νλ©΄ ν¨μ¨μ μ λλ€.