Loading...

[GP] Spring boot์—์„œ DBMS๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๋ฐฉ๋ฒ• - JPA ๊ธฐ๋ณธํŽธ

๋ฐ˜์‘ํ˜•

์ด ๊ธ€์€ N.K Dev Lab์—์„œ ์ž‘์„ฑ๋œ ๊ธ€์ž…๋‹ˆ๋‹ค.

์ง€๋‚œ ํฌ์ŠคํŠธ์—์„œ ๊ฐ„๋‹จํ•œ REST API ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด์„œ ์•Œ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„์ฃผ ์‰ฝ๊ฒŒ GET ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ๊ฒƒ๋งŒ ์ •์˜ํ•˜์˜€๊ณ  ๋‚˜๋จธ์ง€์— ๋Œ€ํ•œ ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค๋ฃจ์ง€ ์•Š์•˜๋Š”๋ฐ์š”. ์˜ค๋Š˜์€ ๋ชจ๋“  REST API๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ํ…Œ์ŠคํŠธ ๋˜ํ•œ ์ง„ํ–‰ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด DBMS ์—ฐ๋™์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ ์‹œ์ž‘ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

DBMS <โ€“> Spring boot

PHP, Node.js ๋“ฑ์—์„œ DBMS๋ฅผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” PDO๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ mongoose ๋“ฑ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ mongoose๋Š” Node.js์—์„œ MongoDB๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๊ณ , PDO๋Š” PHP์—์„œ MySQL ๋“ฑ์˜ DBMS๋ฅผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

Spring boot์—์„œ๋Š” Spring๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ DBMS๋ฅผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด ์กด์žฌํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • JPA
  • MyBatis / iBatis

์•„๋งˆ ๊ธฐ์กด์˜ ๊ฐœ๋ฐœ์ž ๋ถ„๋“ค์ด์‹œ๋ผ๋ฉด Mybatis / ibatis๊ฐ€ ์ข€ ๋” ์ต์ˆ™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. XML ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ ์งˆ์˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ๋ฉ”์†Œ๋“œ๋กœ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์ง€์š”.

JPA ๋˜ํ•œ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, JPA๋Š” XML๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ •์˜ํ•˜์—ฌ ์งˆ์˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์—ญ์‹œ ์ด๋ฅผ ๋ฉ”์†Œ๋“œ๋กœ ํ˜ธ์ถœํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด JPA๋Š” CRUD ๋“ฑ์„ ์ข…์†ํ•  ์ˆ˜ ์žˆ์–ด ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ง์ ‘ CRUD๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ ์ •์˜๋˜์–ด ์žˆ๋Š” ํ˜•ํƒœ์˜ ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด DBMS์— ์–ด๋– ํ•œ ๋ชจ๋ธ๋ง์— ํ•ด๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค ํ•œ๋‹ค๋ฉด Mybatis์—์„œ๋Š” insert ๋ฌธ์„ ์ง์ ‘ ์ •์˜ํ•˜์—ฌ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ JPA์—์„œ๋Š” CRUD๊ฐ€ ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์กด์žฌํ•˜์—ฌ insert, update, delete ๋“ฑ ๊ธฐ๋ณธ์ ์ธ ์งˆ์˜๋ฌธ์— ๋Œ€ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ง์ ‘ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ์ •ํ•ด์ง„ ๋ฉ”์†Œ๋“œ๋งŒ ํ˜ธ์ถœํ•˜๋ฉด ๋ฐ”๋กœ DBMS์— ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

What is JPA ?

๊ทธ๋Ÿผ ์ด JPA๋Š” ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ๋ฐฐ๊ฒฝ์œผ๋กœ ํƒ„์ƒํ•œ ๊ฒƒ์ผ๊นŒ์š”?

JPA๋Š” Java Persistence API์˜ ์•ฝ์ž๋กœ Java ์–ธ์–ด์—์„œ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ๋ช…์„ธ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ •ํ™•ํ•˜๋Š” Java๋ผ๊ธฐ ๋ณด๋‹จ JVM์ด๋ผ๊ณ  ํ•ด์•ผ ๋งž๊ฒ ์ง€๋งŒ ํ†ต์ƒ Java ์–ธ์–ด๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Java ์–ธ์–ด๋ผ๊ณ  ์ด์•ผ๊ธฐ ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฆ‰, Java ํ”Œ๋žซํผ์„ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ์˜ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ธํ„ฐํŽ˜์ด์Šค๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์ฃ .

How to use

๊ทธ๋Ÿผ ์ด์ œ JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค.

buildscript {
    /*
    	...
    */
    
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:$kotlinVersion"
    }
}

apply plugin: 'kotlin-jpa'

dependencies {
    compile('org.springframework.boot:spring-boot-starter-data-jpa')
}

๊ธฐ์กด ํ”„๋กœ์ ํŠธ์—์„œ ๊ณ„์† ์ง„ํ–‰ํ•˜์‹œ๊ณ ์ž ํ•  ๋–„๋Š” build.gradle์—์„œ ์œ„์˜ ๋‚ด์šฉ๋งŒ์„ ์ถ”๊ฐ€ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


์ด์–ด์„œ ์ฝ์œผ์‹œ๋ ค๋ฉด ์•„๋ž˜์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์ฃผ์„ธ์š”.


... ๊ณ„์† ์ฝ๊ธฐ


๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments