JiwonDev

์ฃผ๊ด€์ ์ธ ์ธํ”„๋Ÿฐ ๊ฐ•์˜ ๋ฆฌ๋ทฐ(๐ŸŒฑ๊น€์˜ํ•œ๋‹˜ ์Šคํ”„๋ง)

by JiwonDev

๋ˆ์—†๋Š” ๊ฑฐ์ง€์ง€๋งŒ ์˜ํ•œ๋‹˜ ๊ฐ•์˜๋Š” ์„ ๊ตฌ๋งค ํ›„์ƒ๊ฐ(?)ํ•˜๋Š” ์ €์˜ ์ฃผ๊ด€์ ์ธ ๋ฆฌ๋ทฐ์ž…๋‹ˆ๋‹ค.

 

 

๐Ÿท์ธํ”„๋Ÿฐ ๊น€์˜ํ•œ๋‹˜

์ œ๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊น€์˜ํ•œ๋‹˜์˜ ๊ฐ•์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์žฌ๋ฐŒ์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ๊ณต๋ถ€์ž˜ํ•˜๋Š” ํ˜•์ด ๊ฐ•์˜ํ•ด์ฃผ๋Š” ๋Š๋‚Œ๐Ÿคฃ
  • ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฐœ์„ ์‹œํ‚ค๋ฉฐ ์–ด๋–ป๊ฒŒ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋Š”์ง€๋ฅผ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์•ž๋ถ€๋ถ„์— ์›๋ฆฌ๋ฅผ ๊ธธ๊ฒŒ ์„ค๋ช…ํ•˜๊ณ , ์‹ค์ œ ์‚ฌ์šฉ๋ฒ•์€ ํ›„๋ฐ˜๋ถ€์— ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๋Œ€๋กœ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด ๋‹ต๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๊ฐ•์‚ฌ๋‹˜์ด ์–ด๋–ค๋ถ„์ธ์ง€ ๊ถ๊ธˆํ•˜๋ฉด, ๊ฐœ๋ฐœ๋ฐ”๋‹ฅ ์œ ํŠœ๋ธŒ๋ฅผ ๋ณด์‹œ๋Š” ๊ฑธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. 

 

 

 

๐Ÿคซ ๊ฐ•์˜๋ฅผ ์–ด๋–ป๊ฒŒ ๊ณจ๋ผ๋ด์•ผํ• ๊นŒ์š”?

๋ˆ ๋งŽ๊ณ  ๋ฐฑ์ˆ˜๋ผ์„œ ์‹œ๊ฐ„ ๋นŒ๊ฒŒ์ด์ธ ๋ผ๋ฉด ๋ชจ๋“  ๊ฐ•์˜๋ฅผ ๋‹ค ๊ตฌ๋งคํ•ด์„œ ๋ณด์‹œ๋Š”๊ฒŒ ์ œ์ผ ์ข‹์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์ธํ”„๋Ÿฐ์€ ๊ฑฐ์˜ ๋งค๋‹ฌ๋งˆ๋‹ค ๋‹ค์–‘ํ•œ ์ด์œ ๋กœ 20~30% ํ• ์ธ์„ ํ•˜๋‹ˆ ํ•„์š”ํ•œ ๊ฐ•์˜๋“ค์„ ํ• ์ธ๊ธฐ๊ฐ„์— ์‚ฌ์‹œ๋Š”๊ฑธ ์ถ”์ฒœ๋“œ๋ ค์š”.

 

๋”๋ณด๊ธฐ

์ž๋ฐ”์™€ ์Šคํ”„๋ง์— ์ต์ˆ™ํ•˜๊ณ  ์›น์— ๋Œ€ํ•œ ๊นŠ์ด์žˆ๋Š” ํ•™์Šต์„ ์›ํ•ด์š”.

PDF๋ฅผ ๋จผ์ € ํ›‘์–ด๋ณด๋ฉด์„œ ๋„ˆ๋ฌด ๊ธฐ์ดˆ์ ์ธ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์Šคํ‚ตํ•˜๋ฉด์„œ ๋ณด๋Š”๊ฑธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • 1๏ธโƒฃ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP
    ์ง์ ‘ ์ฐพ์•„๋ณด์ง€์•Š์œผ๋ฉด ์‹ค๋ฌด์—์„œ ํฌ๊ฒŒ ๋ฐฐ์šธ ์ผ ์—†๋Š” HTTP ์™€ ์›น ์„œ๋ฒ„์— ๋Œ€ํ•œ ๊ธฐ์ดˆ์ง€์‹์„ ์Œ“์Šต๋‹ˆ๋‹ค.
  • 2๏ธโƒฃ ์Šคํ”„๋ง MVC 1ํŽธ
    ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ์™€ ํ•จ๊ป˜ MVC ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด๋ฉด์„œ Spring MVC๊ฐ€ ์–ด๋–ค์‹์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๋Š”์ง€๋ฅผ ๋ฐฐ์›๋‹ˆ๋‹ค.
  • 3๏ธโƒฃ JPA ํ™œ์šฉ 2ํŽธ
    JPA ์„ฑ๋ŠฅํŠœ๋‹์— ๊ด€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์š”์•ฝํ•˜๋ฉด ๋‚ด์šฉ์ด ์งง์•„์„œ ๊ตฌ๊ธ€์— ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๋ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.
  • 4๏ธโƒฃ ์Šคํ”„๋ง ํ•ต์‹ฌ์›๋ฆฌ 2ํŽธ
    ๋กœ๊ทธ ๊ธฐ๋Šฅ์„ ๋ฐœ์ „์‹œ์ผœ๋‚˜๊ฐ€๋ฉฐ ์Šคํ”„๋ง AOP์™€ ๋นˆ ํ›„์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ๋ฐฐ์›๋‹ˆ๋‹ค.

 

์ฝ”๋”ฉ์€ ์ต์ˆ™ํ•˜์ง€๋งŒ ์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ์€ ์ฒ˜์Œ์ด์—์š”

  • 1๏ธโƒฃ (๋ฌด๋ฃŒ) ์Šคํ”„๋ง ์ž…๋ฌธ
    ์ƒ๊ฐ์„ ๋น„์šฐ๊ณ  ๋ฌด์ง€์„ฑ์œผ๋กœ ๋”ฐ๋ผํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ์Šคํ”„๋ง ์ฝ”๋“œ์— ์ต์ˆ™ํ•ด์ ธ์•ผ ์ด๋ก ์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
  • 2๏ธโƒฃ ์Šคํ”„๋ง MVC 1ํŽธ
    ๊ธฐ๋ณธ์ ์ธ ์›น ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ๋ฐฐ์›๋‹ˆ๋‹ค. ๋‚ด์šฉ์„ ๋‹ค ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๋”๋ผ๋„ ์Šคํ”„๋ง MVC ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜์”ฉ ์จ๋ณด๋ฉฐ ์ต์ˆ™ํ•ด์ง‘๋‹ˆ๋‹ค.
  • 3๏ธโƒฃ ์Šคํ”„๋ง ํ•ต์‹ฌ์›๋ฆฌ ๊ธฐ๋ณธํŽธ
    ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ์Šคํ”„๋ง ์ฝ”์–ด(๋นˆ ์ปจํ…Œ์ด๋„ˆ)๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.
  • 4๏ธโƒฃ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP
    HTTP์™€ ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.
  • 5๏ธโƒฃ ์‹ค์ „! ์Šคํ”„๋ง DB ์ ‘๊ทผ๊ธฐ์ˆ  2ํŽธ
    ์‹ค๋ฌด์—์„œ ๋งŽ์ด์“ฐ๋Š” DB ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•œ ์‚ฌ์šฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ , ์Šคํ”„๋ง ํŠธ๋žœ์žญ์…˜ ์›๋ฆฌ์— ๋Œ€ํ•ด ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค.

์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•๋„ ๋ชจ๋ฅด๋Š” ์ƒํƒœ๋กœ ์ด๋ก ์ ์ธ ๋‚ด์šฉ์„ ๋ฐฐ์šฐ๋ฉด ๊ธˆ๋ฐฉ ์ง€์น˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์ฝ”๋“œ ์ž‘์„ฑ์— ์ถฉ๋ถ„ํžˆ ์ต์ˆ™ํ•ด์ง„ ๋‹ค์Œ ๋‚˜๋จธ์ง€ ๊ฐ•์˜๋ฅผ ๋“ค์œผ์‹œ๋Š” ๊ฑธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

 

์•„๋ฌด๊ฒƒ๋„ ๋ชฐ๋ผ์š”.

  • 1๏ธโƒฃ (๋ฌด๋ฃŒ) ๊น€์˜ํ•œ์˜ ์ž๋ฐ” ์ž…๋ฌธ - ์ฝ”๋“œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ž๋ฐ” ์ฒซ ๊ฑธ์Œ
    ์Šคํ”„๋ง๋ถ€ํ„ฐ ๋ณด์ง€๋ง๊ณ  ์ปดํ“จํ„ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ๊ธฐ์ดˆ๋ฅผ Java๋กœ ๋ฐฐ์šฐ๊ณ , ์‰ฌ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ต์ˆ™ํ•ด์ง€๋Š”๊ฑธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ ์ž๋ฐ” ๊ฐ•์˜๋Š” ๊ผญ ์˜ํ•œ๋‹˜ ๊ฐ•์˜๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ์ž๋ฐ”์˜ ์ •์„ ์œ ํŠœ๋ธŒ์™€ ๊ฐ™์ด ์ข‹์€ ๊ฐ•์˜๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค.
  • 2๏ธโƒฃ (๋ฌด๋ฃŒ) ์Šคํ”„๋ง ์ž…๋ฌธ
    ์ƒ๊ฐ์„ ๋น„์šฐ๊ณ  ๋ฌด์ง€์„ฑ์œผ๋กœ ๋”ฐ๋ผํ•˜๋Š” ๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ผ๋‹จ ์Šคํ”„๋ง ์ฝ”๋“œ์— ์ต์ˆ™ํ•ด์ ธ์•ผ ์ด๋ก ์ด ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
  • 3๏ธโƒฃ ์‹ค์ „ ์Šคํ”„๋ง ๋ถ€ํŠธ์™€ JPA ํ™œ์šฉ1
    ์–ด๋Š์ •๋„ ์™„์„ฑ๋„ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋”ฐ๋ผ ๋งŒ๋“ค์–ด๋ด…๋‹ˆ๋‹ค. ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์งˆ๋ฌธ/๋‹ต๋ณ€์ด๋‚˜ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ๋“  ์™„์ฃผํ•ฉ๋‹ˆ๋‹ค.

์ด ์ •๋„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ž๋ฐ”์— ์ต์ˆ™ํ•ด์กŒ๋‹ค๋ฉด ๊ทธ ์ดํ›„๋Š” ์œ„์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ํ•œ๋ฒˆ๋„ ํ•ด๋ณด์‹œ์ง€ ์•Š์•˜๋‹ค๋ฉด ๋‚ด๊ฐ€ ์ ์„ฑ์— ๋งž๋Š”์ง€๋„ ์ž˜ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์Šคํ„ฐ๋””๋‚˜ ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋”ฐ๋ผ ๋งŒ๋“ค์–ด๋ณด๋ฉฐ ๋จผ์ € ๊ฐœ๋ฐœ์— ์ต์ˆ™ํ•ด์ง€๊ณ  ๊ทธ ์ดํ›„๋ฅผ ์„ ํƒํ•˜์‹œ๋Š”๊ฑธ ์ถ”์ฒœ๋“œ๋ ค์š”.

 

 

 

 

 

๐Ÿ’ญ  ์Šคํ”„๋ง ์ž…๋ฌธ

  • ๋ฌด๋ฃŒ ๊ฐ•์˜์ด๊ณ , ์Šคํ”„๋ง์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ฝ”๋“œ๋กœ ์ณ๋ณด๋ฉด์„œ ์ „์ฒด์ ์œผ๋กœ ํ›‘์–ด์ค๋‹ˆ๋‹ค.


๐Ÿ’ญ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP (โญ๊ฐ•์ถ”โญ)

  • ์ธํ„ฐ๋„ท์˜ ์›๋ฆฌ, ์„œ๋ธ”๋ฆฟ, ์›น์„œ๋ฒ„๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • HTTP ํŠน์„ฑ๊ณผ  ๊ทธ์— ๋”ฐ๋ฅธ API ์„ค๊ณ„๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋”๋ผ๋„ ๋“ค์–ด๋‘๋ฉด ์ข‹์€ ๊ฐ•์˜


๐Ÿ’ญ ์Šคํ”„๋ง ํ•ต์‹ฌ์›๋ฆฌ ๊ธฐ๋ณธํŽธ

  • ๊ฐ์ฒด์ง€ํ–ฅ๊ณผ ํด๋ฆฐ์ฝ”๋“œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ , ๊ฐ์ฒด์˜ ์˜์กด์„ฑ, ๊ด€์‹ฌ์‚ฌ์˜ ๋ถ„๋ฆฌ๊ฐ€ ์™œ ์–ด๋ ค์šด์ง€๋ฅผ ๋‹จ๊ณ„์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์Šคํ”„๋ง์€ ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๊ณ , ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ์Šคํ”„๋ง ๋นˆ์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ•์˜๊ฐ€ ์žฌ๋ฏธ์žˆ๊ธด ํ•˜์ง€๋งŒ, ์Šคํ”„๋ง ์ž…๋ฌธ์ž์—๊ฒ ๋‚ด์šฉ์ด  ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด๋ณด๊ณ  ๋“ฃ๋Š” ๊ฑธ ์ถ”์ฒœ


๐Ÿ’ญ ์Šคํ”„๋ง ํ•ต์‹ฌ์›๋ฆฌ ๊ณ ๊ธ‰ํŽธ

  • ์Šคํ”„๋ง์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋””์ž์ธํŒจํ„ด๋“ค์„ '๋กœ๊ทธ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด' ๋ฅผ ํ•œ๋‹จ๊ณ„์”ฉ ๋ฐœ์ „์‹œ์ผœ๊ฐ€๋ฉฐ ๋ฐฐ์›๋‹ˆ๋‹ค.
  • ์•ž์—์„œ ๋ฐฐ์šด ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ์Šคํ”„๋ง AOP, ๋นˆ ํ›„์ฒ˜๋ฆฌ๊ธฐ์˜ ๋™์ž‘๊ณผ ์›๋ฆฌ์— ๋Œ€ํ•ด ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  • ๋ชฐ๋ผ๋„ ํฐ ์ƒ๊ด€์—†์ง€๋งŒ, ์•Œ์•„๋‘๋ฉด ์ข‹์€ ์ง€์‹๋“ค์ด๋ฉฐ ์Šคํ”„๋ง์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.


๐Ÿ’ญ ์Šคํ”„๋ง MVC 1ํŽธ (โญ๊ฐ•์ถ”โญ)

  • ์„œ๋ธ”๋ฆฟ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์‹œ์ž‘์œผ๋กœ, ์›น ์„œ๋น„์Šค๋ฅผ ๋”ฐ๋ผ ๋งŒ๋“ค์–ด๋ด…๋‹ˆ๋‹ค.
  • ํ•œ๋‹จ๊ณ„์‹ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ์‹œํ‚ค๋ฉฐ ์ตœ์ข…์ ์œผ๋กœ ์Šคํ”„๋ง MVC์˜ Dispatcher Servlet์„ ์™„์„ฑ์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๊ฐ•์˜์˜ ๊ธฐ์Šน์ „๊ฒฐ์ด ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ์Šคํ”„๋ง์ด ์•„๋‹ˆ๋”๋ผ๋„, ์›น ๊ฐœ๋ฐœ์„ ํ•˜๋ฉฐ ๊ผญ ํ•„์š”ํ•œ ์ง€์‹๋“ค์„ ํ•จ๊ป˜ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ’ญ ์Šคํ”„๋ง MVC 2ํŽธ

  • ์Šคํ”„๋ง MVC์— ์ œ๊ณต๋˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ๋‹ค ํ›‘์–ด์ฃผ๋ฉฐ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•ด์ค๋‹ˆ๋‹ค.
  • ์ธํ„ฐ์…‰ํ„ฐ, ๊ตญ์ œํ™”, Validation, ์˜ˆ์™ธ์ฒ˜๋ฆฌ, ํƒ€์ž…์ปจ๋ฒ„ํ„ฐ, ํŒŒ์ผ์—…๋กœ๋“œ ๋“ฑ์˜ ์›๋ฆฌ๋ฅผ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ ์›๋ฆฌ์— ๋น„ํ•ด ์Šคํ”„๋ง์ด ์ œ๊ณตํ•˜๋Š” ์‚ฌ์šฉ๋ฒ•์€ ๊ฐ„๋‹จํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋’ค ํ˜„ํƒ€๊ฐ€ ์˜ฌ ์ˆ˜์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ๋„ ์Šคํ”„๋ง์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ํ•œ๋ฒˆ์”ฉ ์จ๋ณด๊ณ  ๋“ฃ๋Š” ๊ฑธ ์ถ”์ฒœ


๐Ÿ’ญ JPA ๊ธฐ๋ณธํŽธ (โญ๊ฐ•์ถ”โญ)

  • ์˜ํ•œ๋‹˜์˜ JPA ์ฑ…๊ณผ ๋‚ด์šฉ์ด ๊ฐ™์Šต๋‹ˆ๋‹ค. JPA์˜ ์›๋ฆฌ์™€ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํ•˜๊ฒŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ ์ด๊ฒƒ๋„ JPA๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์›๋ฆฌ๋ฅผ ๋ฐฐ์šฐ๋Š”๊ฑธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์›๋ฆฌ๋ฅผ ๊นŠ๊ฒŒ ๋ฐฐ์šฐ๋ฉด ํž˜๋“ญ๋‹ˆ๋‹ค.


๐Ÿ’ญ JPA ํ™œ์šฉ 1ํŽธ (JPA ์‚ฌ์šฉ)

  • JPA์„ ์‚ฌ์šฉํ•ด ๊ฐ„๋‹จํ•œ ์Šคํ”„๋ง ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • JPA๋ฅผ ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉํ•˜์ง€๋งŒ, ์›๋ฆฌ๋ฅผ ๊ธฐ๋ณธํŽธ๋งŒํผ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช… ํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ณ ๋กœ ํ™œ์šฉํŽธ์„ ๋“ฃ๊ณ  (ํ˜น์€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ JPA๋ฅผ ์จ๋ณด๊ณ ) ๊ธฐ๋ณธํŽธ์„ ๋“ค์œผ๋ฉด ๊ฐ•์˜ ๋‚ด์šฉ์ด ์ข€ ๋” ์‰ฝ๊ฒŒ ์ดํ•ด๋ฉ๋‹ˆ๋‹ค.


๐Ÿ’ญ JPA ํ™œ์šฉ 2ํŽธ (JPA ์„ฑ๋Šฅ์ตœ์ ํ™”)

  • ์‹ค๋ฌด์—์„œ JPA์‚ฌ์šฉ ์‹œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹ค์ˆ˜์™€ JPA ๋‚ด์—์„œ ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์ค๋‹ˆ๋‹ค.
  • ํŒจ์น˜์กฐ์ธ, DTO๋กœ ๋ฐ”๋กœ ์กฐํšŒํ•˜๊ธฐ, ํŽ˜์ด์ง• ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋“ฑ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  • ์„ค๋ช…์€ ์ •๋ง ์ž˜ํ•ด์ฃผ์‹œ์ง€๋งŒ, ๊ฒฐ๋ก ์„ ์ •๋ฆฌํ•˜๋ฉด ๋‚ด์šฉ์ด ์–ผ๋งˆ ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€์— ๊ฐ•์˜ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๋ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌผ๋ก  ์ €๋Š” ๋ฌด์ง€์„ฑ์œผ๋กœ ๊ตฌ๋งคํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฏฟ๊ณ ๋ณด๋Š” ์˜ํ•œ๋‹˜ ๊ฐ•์˜๋‹ˆ๊นŒ์š” ๐Ÿคฃ


๐Ÿ’ญ ์‹ค์ „ QueryDSL

  • ๋‹ค๋ฅธ ๊ฐ•์˜์—์„œ ๋งŽ์ด ์–ธ๊ธ‰ํ•˜๋Š” QueryDSL + JPA ์กฐํ•ฉ์˜ ๋‹ค์–‘ํ•œ ์ผ€์ด์Šค๋“ค์„ ์ž์„ธํ•˜๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šคํ”„๋ง์—์„œ QueryDSL + JPA ํ™œ์šฉ ๋ฐฉ๋ฒ•๊ณผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„  ๋ฌด์Šจ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  • ๋‹ค๋งŒ ๋ณธ์ธ์ด ์ด๋ฏธ JPA์™€ DB SQL์— ์ต์ˆ™ํ•˜๋‹ค๋ฉด, ๊ตณ์ด ๊ฐ•์˜๋ฅผ ๋ณด์ง€์•Š์•„๋„ ๊ตฌ๊ธ€๋ง-๊ณต์‹๋ฌธ์„œ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•˜๊ธด ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ’ญ ์‹ค์ „ ์Šคํ”„๋ง ๋ฐ์ดํ„ฐ JPA

  • JPA์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์Šคํ”„๋ง์ด ์–ด๋–ป๊ฒŒ ์ถ”์ƒํ™”์‹œ์ผฐ๋Š”์ง€์™€ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ๋Š” ๊ธฐ๋Šฅ๊ณผ, ๊ฑฐ์˜ ์“ฐ์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์„ค๋ช…ํ•ด์ฃผ๊ณ  ๊ทธ ์ด์œ ๋ฅผ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  • ์ด๊ฒƒ๋„ ๊ฐ•์˜๋ฅผ ๋จผ์ € ๋ณด๊ธฐ๋ณด๋‹ค๋Š”, SpringDataJpa๋ฅผ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•ด๋ณด๊ณ  ๊ฐ•์˜๋ฅผ ๋ณด๋Š”๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ญ ์‹ค์ „! ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  1ํŽธ

  • JDBC ๊ธฐ์ดˆ( Connection, DataSource, Query )์— ๋Œ€ํ•ด ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. 
  • ํŠธ๋žœ์žญ์…˜๊ณผ DB ์˜ˆ์™ธ์ฒ˜๋ฆฌ์— ๋”ฐ๋ฅธ ์–ด๋ ค์›€์„ ํ•™์Šตํ•˜๊ณ  ์Šคํ”„๋ง์ด ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ํ•˜๋‚˜์”ฉ ํŒŒํ—ค์ณ๋ด…๋‹ˆ๋‹ค.
  • Spring Data ์ ‘๊ทผ ๊ธฐ์ˆ ์ด๋‚˜ AOP์— ๋Œ€ํ•œ ์–ธ๊ธ‰์€ ์žˆ์œผ๋‚˜ ์ด๋ฅผ ์ž์„ธํ•˜๊ฒŒ ๋‹ค๋ฃจ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ๊ฐ•์˜๋ผ์„œ ์ด๋ฏธ Java๋กœ DB๋ฅผ ๋งŽ์ด ๋‹ค๋ค„๋ณด์•˜๊ฑฐ๋‚˜ ์ต์ˆ™ํ•˜๋‹ค๋ฉด ๋“ค์„ ํ•„์š”๋Š” ์—†์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ญ ์‹ค์ „! ์Šคํ”„๋ง DB ์ ‘๊ทผ ๊ธฐ์ˆ  2ํŽธ

  • ์‹ค๋ฌด์—์„œ ์‚ฌ์šฉํ•˜๋Š” DB ๊ธฐ์ˆ ๋“ค์„ ์ข…๋ฅ˜๋ณ„๋กœ ๋‹ค ์จ๋ด…๋‹ˆ๋‹ค ๊ฐ ๊ธฐ์ˆ ์„ ๊นŠ์ด์žˆ๊ฒŒ ํŒŒ์ง€๋Š” ์•Š๊ณ  ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ๋งŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ( JdbcTemplate, MyBatis, JPA, QueryDsl)
  • ๊ทธ๋ž˜์„œ ์ด๋ฏธ ์จ๋ดค๋‹ค๋ฉด ์•ž๋ถ€๋ถ„์—์„œ ํฌ๊ฒŒ ์–ป์–ด๊ฐˆ๊ฑด ์—†๊ธดํ•ฉ๋‹ˆ๋‹ค. ์Šคํ‚ตํ•˜๊ณ  ํ›„๋ฐ˜๋ถ€ ์Šคํ”„๋ง ํŠธ๋žœ์žญ์…˜ ๋ถ€๋ถ„๋งŒ ๋“ฃ๋Š” ๊ฒƒ๋„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
  • ํ›„๋ฐ˜๋ถ€์—๋Š” ์Šคํ”„๋ง ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด ๊นŠ์ด์žˆ๊ฒŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค. โญ๏ธ @Transactional ์˜ ๋™์ž‘์›๋ฆฌ์— ๋Œ€ํ•ด ๋ชจ๋ฅธ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ๋“ค์–ด์•ผ ํ•  ๊ฐ•์˜!

 

 

๐Ÿ’ญ ์Šคํ”„๋ง ๋ถ€ํŠธ - ํ•ต์‹ฌ ์›๋ฆฌ์™€ ํ™œ์šฉ

ํ† ๋น„๋‹˜์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ ๊ฐ•์˜์™€ ํ•จ๊ป˜ ์—ด์‹ฌํžˆ ๋“ฃ๋Š” ์ค‘.. (2024 ํ›„๊ธฐ ์ž‘์„ฑ ์˜ˆ์ •)

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ