๐Ÿ’ป Web

[SpringBoot] H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ๋ฐฉ๋ฒ• (+์˜ค๋ฅ˜ ํ•ด๊ฒฐ)

ji_wonna 2022. 7. 28. 21:50

H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ํŒŒ์ผ ๊ธฐ๋ฐ˜์˜ RDBMS์ด๋‹ค. ์ž‘์€ ํฌ๊ธฐ์™€ ๋น ๋ฅธ ์†๋„๋ฅผ ํŠน์ง•์œผ๋กœ ํ•˜๋ฉฐ ์ฃผ๋กœ ๊ฐœ๋ฐœ์šฉ์ด๋‚˜ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. ์‹ค์ œ ์šด์˜์‹œ์Šคํ…œ์€ ์ข€ ๋” ๊ตต์งํ•œ Oracle, MSSQL ๋“ฑ์˜ DB๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ํŒจํ„ด์ด๋‹ค.


์‚ฌ์šฉ๋ฐฉ๋ฒ•

  1. build.gradle ํŒŒ์ผ์˜ dependencies์— runtimeOnly 'com.h2database:h2' ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.
  2. src/main/resources/application.properties ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•ด์ค€๋‹ค.
#DATABASE
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.datasource.url=jdbc:h2:~/local
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

 

 

์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ spring.h2.console.path ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด H2 ์ฝ˜์†”์— ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋‹ค. (ํ•œ๊ตญ์–ด๋„ ์ง€์›ํ•ด์ค€๋‹ค!! ๐Ÿ‘๐Ÿป)

์ฝ˜์†”์— ์ ‘์†ํ•œ ํ›„์— [์—ฐ๊ฒฐ]์„ ํด๋ฆญํ–ˆ๋Š”๋ฐ ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๋‹ค...ใ…  test๋ผ๋Š” db๊ฐ€ ์—†์œผ๋‹ˆ๊นŒ ๋ฏธ๋ฆฌ ๋งŒ๋“ค๋˜์ง€ remote๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์„ ํ—ˆ์šฉํ•˜๋˜์ง€ ํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€ ๊ฐ™๋‹ค.

๊ธฐ๋ณธ ๊ฒฝ๋กœ๋กœ ์„ค์ •๋œ test๋Š” db๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค๋Š”๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ ๋‹นํ™ฉ์Šค๋Ÿฌ์› ๋‹ค.

์•Œ๊ณ  ๋ณด๋‹ˆ H2 1.4.198 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๋ณด์•ˆ์ƒ์˜ ๋ฌธ์ œ๋กœ db๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ํ™ˆ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ง์ ‘ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์คฌ๋‹ค. ์–ด์ฐจํ”ผ ๋‚˜๋Š” spring.datasource.url ์— local ์ด๋ผ๊ณ  ์„ค์ •ํ•ด๋†จ๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ์ผ ์ด๋ฆ„์€ local.mv.db ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.

 

 

JDBC URL์„ jdbc:h2:~/local๋กœ ์ˆ˜์ •ํ•œ ๋’ค [์—ฐ๊ฒฐ]์„ ํด๋ฆญํ–ˆ๋”๋‹ˆ ์•„๋ž˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์ฝ˜์†” ํ™”๋ฉด์ด ๋–ด๊ณ  ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

์ด์ œ ์ž๋ฐ”์—์„œ H2๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉด ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.

์Šคํ”„๋ง๋ถ€ํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ JPA๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ์œ„ํ•œ ์ถ”๊ฐ€์ ์ธ ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

JPA(Java Persistence API)๋ž€? ์ž๋ฐ” ์ง„์˜์—์„œ ORM์˜ ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๊ตฌํ˜„ํ•ด์ฃผ๋Š” ์‹ค์ œ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ JPA ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค๋กœ๋Š” Hibernate๊ฐ€ ์žˆ๋‹ค.

 

 

์šฐ์„  build.gradle ํŒŒ์ผ์˜ dependencies ์—

implementation 'org.springframework.boot:spring-boot-starter-data-jpa' ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

(build.gradle ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ๋’ค์—๋Š” synchronize ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์žŠ์œผ๋ฉด ์•ˆ ๋œ๋‹ค)

 

๊ทธ๋ฆฌ๊ณ  src/main/resources ์˜ application.properties ํŒŒ์ผ์— JPA ์„ค์ •์„ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ™˜๊ฒฝ์„ค์ •์ด ๋๋‚œ๋‹ค.

# JPA
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update