H2 - ynjch97/YNJCH_WIKI GitHub Wiki

1. ์ฐธ๊ณ  ์‚ฌ์ดํŠธ

2. H2 DB

  • ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜
  • In-Memory DB ๊ธฐ๋Šฅ์„ ์ง€์›
  • ๋ฐ์ดํ„ฐ ์˜์†์„ฑ์„ ์œ„ํ•ด ๋””์Šคํฌ ๊ธฐ๋ฐ˜์˜ ์ €์žฅ ๋ฐฉ์‹ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

2-1. Embedded ๋ชจ๋“œ

  • ๋ณ„๋„์˜ ์„ค์น˜ ๊ณผ์ •์ด ํ•„์š” ์—†์–ด ํ…Œ์ŠคํŠธ ์šฉ๋„๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋จ
  • ์ƒ์šฉ์—์„œ๋„ In-Memory ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅ
    Embedded ๋ชจ๋“œ
  • H2 DB๋ฅผ ์‹œ์Šคํ…œ์˜ ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ (JVM ์œ„์—์„œ) ๊ตฌ๋™์‹œํ‚ค๋Š” ๋ฐฉ์‹
  • application์ด ์ข…๋ฃŒ๋œ๋‹ค๋ฉด ์ €์žฅ, ์ˆ˜์ •๋œ Data๊ฐ€ ์†์‹ค(ํœ˜๋ฐœ)๋จ > ์˜์†์ ์ด์ง€ ์•Š์€ ๋ฐฉ์‹
  • ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์˜์†์„ฑ์„ ์ œ๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Œ
  • ๋ฉ”์ธ ๋ฉ”๋ชจ๋ฆฌ์— DB๋ฅผ ๋„์›Œ๋†“๊ณ  ํ•ด๋‹น DB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Application์˜ ์Šค๋ ˆ๋“œ๋กœ ๋ฐ์ดํ„ฐ์— ๋ฐ”๋กœ ์ ‘๊ทผํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ, ์“ฐ๊ธฐ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ
  • ๋ฐ์ดํ„ฐ ์บ์‹ฑ DB์— ๋Œ€ํ•ด์„œ๋„ H2๋ฅผ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Œ
  • JVM์—์„œ ๋ฐ์ดํ„ฐ ์—ฐ์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ์ธํ„ฐ๋ŸฝํŠธ ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— IO ์ˆ˜ํ–‰ ์‹œ์— I/O Handler๊ฐ€ ๋‹ซํž˜์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์†์ƒ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Œ

2-2. Server ๋ชจ๋“œ

  • ๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค(JVM)๋ฅผ ํ†ตํ•ด DB๋ฅผ ๋™์ž‘์‹œ์ผœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์˜์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • local ํ™˜๊ฒฝ์—์„œ๋Š” localhost์˜ 9092ํฌํŠธ๋ฅผ ํ†ตํ•ด DB ์ฝ˜์†”์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ
  • ๋ณ„๋„์˜ ์„œ๋ฒ„ ์œ„์—์„œ ๋™์ž‘์‹œํ‚ฌ ๊ฒฝ์šฐ์— ์—ฌ๋Ÿฌ Application์„ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋™์‹œ์ ์œผ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ
  • ์„œ๋ฒ„ ๋ชจ๋“œ๋„ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” Embedded ๋ชจ๋“œ์™€ ๋™์ผํ•œ ์‹คํ–‰ ๋ฐฉ์‹
  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ํ๋ฆ„์ด TCP/IP๋ฅผ ํ†ตํ•˜์—ฌ ์ „์†ก๋˜๊ธฐ ๋•Œ๋ฌธ์— Embedded ๋ชจ๋“œ๋ณด๋‹ค ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
    Server ๋ชจ๋“œ

3. H2 ์„ค์น˜

  • ์„ค์น˜ ์‹œ, cmd ์ฐฝ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ ์ฝ˜์†” ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ
cd C:\Program Files (x86)\H2\bin
dir
h2

3-1. Spring Boot์— H2 Embedded DB ์—ฐ๋™

  • build.gradle
dependencies {
	...
	runtimeOnly 'com.h2database:h2'
	...
}
  • application.properties (DB๋ช… test)
    • spring.h2.console.enabled : ์›น ์ฝ˜์†”์—์„œ DB ๋‚ด์šฉ์„ ํ™•์ธํ• ์ง€ ์—ฌ๋ถ€ ์„ค์ •
spring.datasource.driverClassName=org.h2.Driver 
# spring.datasource.url=jdbc:h2:~/test 
# in-memory ์ฃผ์†Œ ์„ค์ •(mem)
spring.datasource.url=jdbc:h2:mem:test
spring.datasource.username=sa 
spring.datasource.password=1111
spring.h2.console.enabled: true
spring.h2.console.path=/h2-console
  • http://localhost:8080/console ์—์„œ H2 Database ์ฝ˜์†”์— ์•ก์„ธ์Šค
  • ์‹คํ–‰๋œ Browser console ํ™•์ธ ๋ฐ ์•„๋ž˜ ๋‚ด์šฉ ์ž…๋ ฅ
    • ๋“œ๋ผ์ด๋ฒ„ ํด๋ž˜์Šค : org.h2.Driver
    • JDBC URL : jdbc:h2:~/test
    • ์‚ฌ์šฉ์ž๋ช… : sa
    • ๋น„๋ฐ€๋ฒˆํ˜ธ : 1111

3-2. Spring Boot์— Server ๋ชจ๋“œ๋กœ ์—ฐ๋™

spring: 
	datasource: 
		url: jdbc:h2:tcp://localhost/~/test # Tcp, Server ๋ชจ๋“œ ์ฃผ์†Œ ์„ค์ • 
		username: sa 
		driver-class-name: org.h2.Driver