MVC ํŒจํ„ด (ORM, SQL)

๋ฐ•์šฐํ˜„ (Joshua)ยท2023๋…„ 4์›” 30์ผ

ํ•ญํ•ด99_TIL

๋ชฉ๋ก ๋ณด๊ธฐ
17/20

๐Ÿ“‹ MVC ํŒจํ„ด

์ „์—๋„ ๋‹ค๋ฃจ์–ด ๋ณธ ์ ์ด ์žˆ๋“ฏ์ด, MVC ( Model - View - Controller ) ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ์จ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์„ Model, View, Controller๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•œ ํŒจํ„ด์„ ๋œป ํ•œ๋‹ค.

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

๐ŸŽˆ ORM ( Object - Relational Mapping )

ORM ( Object - Relational Mapping ) ์€ ์œ„์—์„œ ๋‹ค๋ฃจ์—ˆ๋˜, MVC ํŒจํ„ด ์ค‘ Model ์—ญํ• ์„ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์กฐ๊ธˆ ๋” ์‰ฝ๊ฒŒ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ผ๋‹จ ์ด๊ฒƒ์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด ( Object )๋ฅผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ( Relational data)์— ๋งคํ•‘ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์ด๋‹ค. ์ด ๊ธฐ์ˆ ์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฐ”์™€ ๊ฐ™์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์™€ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์ด์— ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜๊ฐ€ ์žˆ๊ธฐ๋•Œ๋ฌธ์ด๋‹ค. ์ผ๋‹จ "ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜"๋ผ๋Š” ๋‹จ์–ด ์•ˆ์— ๋งŽ์€ ๊ฒƒ๋“ค์ด ํฌํ•จ๋˜์–ด ์žˆ์ง€๋งŒ, ํ˜„์žฌ ๋‚ด ์ง€์‹์œผ๋กœ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€,

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

์ด์™ธ์—๋„ ๋‹ค๋ฅธ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ถˆ์ผ์น˜ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ์ค‘๊ฐ„์—์„œ SQL๊ณผ JDBC API๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ณ€ํ™˜ ์ž‘์—…์„ ์ง์ ‘ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์ผ์€ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ๋“œ๋Š” ์ผ์ด๋ฉด์„œ ๋ฐ˜๋ณต์ ์ด๊ณ  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฌ์šด ์ž‘์—…์ด ๋œ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์˜ ์ค‘์‹ฌ์ด ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ(SQL)๋กœ ์ด๋™์ด ๋ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์„ค๊ณ„์— ์ง‘์ค‘ํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ORM์ด ๋ฐ”๋กœ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ค€๋‹ค. ORM์€ CRUD SQL์„ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•ด์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฐ์ฒด ๋ชจ๋ธ๋ง๋„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๊ณ , SQL์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐœ๋ฐœ์–ธ์–ด๋ฅผ ๋ฒˆ์—ญํ•ด์ฃผ์–ด SQL์„ ๋Œ€์‹  ์ ์–ด์ค€๋‹ค.


๐ŸŽˆSQL ( Structured Query Language)

๊ทธ๋Ÿผ ORM์ด ๋Œ€์‹  ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” SQL์ด๋ž€, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ •๋ณด๋ฅผ ์ €์žฅ, ์กฐํšŒ, ์—…๋ฐ์ดํŠธ, ๋ฐ ์‚ญ์ œ๋ฅผ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋งŽ์€ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ๋“ค์ด SQL์„ ํ‘œ์ค€์œผ๋กœ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค.


์ถœ์ฒ˜:
์ถœ์ฒ˜ 1
์ถœ์ฒ˜ 2

"ํƒฑํ ORM!" ๐Ÿ‘
'23.04.24 - '23.04.29

profile
๋งค์ผ ๋งค์ผ ์„ฑ์žฅํ•˜์ž

0๊ฐœ์˜ ๋Œ“๊ธ€