Intro

MVCํŒจํ„ด์€ ๋””์ž์ธํŒจํ„ด ์ค‘ ํ•˜๋‚˜โ—

  • ์‹คํŒจํ–ˆ๋˜ ์ž๋ฃŒ, ์‚ฌ๋ก€๋ฅผ ๋ชจ์•„ ๋‘” ๊ฒƒ โ†’ ํŒจํ„ด, ์•„ํ‚คํ…์ณ

  • ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธํŒจํ„ด

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

1 MVC๋ž€

๐Ÿ“Œ MVCํŒจํ„ด : SpringBoot ์•„ํ‚คํ…์ณ์—์„œ Presentation ๊ณ„์ธต์— ์†ํ•จ

๐Ÿ“ Model : ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ •๋ณด ๋ฐ ๋ฐ์ดํ„ฐ

๐Ÿ“ View : ํ…์ŠคํŠธ, ์ฒดํฌ๋ฐ•์Šค ๋“ฑ ์‚ฌ์šฉ์ž์ธํ„ฐํŽ˜์ด์Šค ์š”์†Œ

๐Ÿ“ Controller : ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง ์‚ฌ์ด์˜ ์ƒํ˜ธ๋™์ž‘ ๊ด€๋ฆฌ

1๏ธโƒฃ MVCํŒจํ„ด ์žฅ์ 

  • Client ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋ถ€ํ„ฐ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง ๋ถ„๋ฆฌ โœ…

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ๊ฐ์ ์š”์†Œ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์„ ์„œ๋กœ ์˜ํ–ฅ์—†์ด ์‰ฝ๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Œ โœ…

  • View์— ๋ชจ๋“  ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง ๋„ฃ์œผ๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€

2๏ธโƒฃ MVCํŒจํ„ด ๊ณผ์ •

  • โ‘  Client๊ฐ€ Controller ์กฐ์ž‘

  • โ‘ก Controller๋Š” Model์— ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„ ๊ฐ€์ ธ์˜ด

  • โ‘ข Model ๋ฐ์ดํ„ฐ๊ธฐ๋ฐ˜ โ†’ View(์‹œ๊ฐ์  ํ‘œํ˜„๋‹ด๋‹น) ์ œ์–ด

  • โ‘ฃ View๋ฅผ ํ†ตํ•ด Client์—๊ฒŒ ์ตœ์ข…์ „๋‹ฌ


2 Model

๐Ÿ“Œ Model
: Data์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ์ง€ ์ •์˜ํ•˜๋Š” ๋ถ€๋ถ„
: ๋‚ด๋ถ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์—ญํ• 

1๏ธโƒฃ Model ์—ญํ• 

  • Controller๊ฐ€ ํ˜ธ์ถœ โ†’ DB์™€ ์—ฐ๋™ํ•ด Client ์ž…์ถœ๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃธ

  • ๋ฐ์ดํ„ฐ์™€ ์—ฐ๊ด€๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•จ

  • ๋ฐ์ดํ„ฐ ์ถ”์ถœ, ์ €์žฅ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ ๋“ฑ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•จ

  • DB, ์ƒ์ˆ˜, ์ดˆ๊ธฐํ™”๊ฐ’, ๋ณ€์ˆ˜ ๋“ฑ

2๏ธโƒฃ Model ๊ทœ์น™

  • Client๊ฐ€ ํŽธ์ง‘ํ•˜๊ธธ ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ ์žˆ์Œ

    • ํ™”๋ฉด์•ˆ์˜ ๋„ค๋ชจ๋ฐ•์Šค์— ๊ธ€์ž๊ฐ€ ํ‘œํ˜„๋œ๋‹ค๋ฉด,
    • ๋„ค๋ชจ๋ฐ•์Šค์˜ ํ™”๋ฉด์œ„์น˜์ •๋ณด, ํฌ๊ธฐ์ •๋ณด, ๊ธ€์ž๋‚ด์šฉ, ๊ธ€์ž์œ„์น˜ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ ์žˆ์–ด์•ผํ•จ
  • View, Controller์— ๋Œ€ํ•œ ์–ด๋–ค ์ •๋ณด๋„ ์•Œ๊ณ ์žˆ์œผ๋ฉด โŒ

    • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‹œ
      โ†’ Model์—์„œ ์ง์ ‘ ์กฐ์ •, ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ View๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ ์†์„ฑ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ๋Œ
  • ๋ณ€๊ฒฝ ์‹œ, ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผํ•จ


3 View

๐Ÿ“Œ View
: Client์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด(UI)
: ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Client๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด(์ถœ๋ ฅ๋‹ด๋‹น)

1๏ธโƒฃ View ์—ญํ• 

  • Client์™€ ์ƒํ˜ธ์ž‘์šฉ โ†’ Controller๋กœ ๋ฐ›์€ Model์˜ ๊ฒฐ๊ณผ๊ฐ’
    โžก๏ธ Client ํ™”๋ฉด์œผ๋กœ ์ถœ๋ ฅ

  • MVCํŒจํ„ด์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ View ์กด์žฌ๊ฐ€๋Šฅ

  • Model์—์„œ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋Š” ๋ณ„๋„๋กœ ์ €์žฅ โŒ

2๏ธโƒฃ View ๊ทœ์น™

  • Model์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด์ €์žฅ โŒ

    • Model์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด์ „๋‹ฌ โ†’ ์ •๋ณด์œ ์ง€๋ฅผ ์œ„ํ•œ ์ž„์˜์˜ View ๋‚ด๋ถ€์ €์žฅ๋ถˆ๊ฐ€
    • Client์—๊ฒŒ ๋ฐ›์€ ๋ช…๋ น โ†’ ๋‹จ์ง€ ํ™”๋ฉด์— ํ‘œ์‹œ๋งŒ ํ•จ
  • Model, Controller์— ๋Œ€ํ•œ ์–ด๋– ํ•œ ์ •๋ณด๋„ ์•Œ๊ณ ์žˆ์œผ๋ฉด ์•ˆ๋Œ

  • ๋ณ€๊ฒฝ ์‹œ, ๋ณ€๊ฒฝ ํ†ต์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผํ•จ


4 Controller

๐Ÿ“Œ Controller : Model๊ณผ View๋ฅผ ์ด์–ด์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• 

1๏ธโƒฃ Controller ์—ญํ• 

  • Client๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š”๊ฒƒ์— ๋Œ€ํ•œ Event๋ฅผ ์ฒ˜๋ฆฌํ•จ

    • create + read + update + delete
  • Model์ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ด View์—๊ฒŒ ์ „๋‹ฌํ• ์ง€ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• 

  • โ‘  Client View์— Request

  • โ‘ก Controller ํ•ด๋‹น Model ํ˜ธ์ถœ

  • โ‘ข Model โ†’ ๊ฒฐ๊ณผ View์— ์ „๋‹ฌ

2๏ธโƒฃ Controller ๊ทœ์น™

  • Model, View์— ๋Œ€ํ•ด ์•Œ๊ณ ์žˆ์–ด์•ผํ•จ

    • Model or View๋Š” ์„œ๋กœ์˜ ์กด์žฌ๋ฅผ ๋ชจ๋ฆ„ + ๋ณ€๊ฒฝ์„ ์™ธ๋ถ€๋กœ ์•Œ๋ฆผ + ์ˆ˜์‹ ๋งŒ ํ•จ
    • Controller๊ฐ€ ์ค‘๊ฐ„์—์„œ ์ค‘์žฌํ•ด์•ผ ํ•˜๊ธฐ๋•Œ๋ฌธ์— ๊ด€๋ จ๋‚ด์šฉ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผํ•จ
  • Model, View ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•จ

    • Model or View์˜ ๋ณ€๊ฒฝ ํ†ต์ง€ ์ˆ˜์‹  โ†’ ํ•ด์„ํ•ด์„œ ๊ฐ๊ฐ์˜ ๊ตฌ์„ฑ์š”์†Œ์—๊ฒŒ ํ†ต์ง€ํ•จ
    • application ๋ฉ”์ธ ๋กœ์ง์€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋‹ด๋‹น

5 MVCํŒจํ„ด ์žฅ์ 

  • ๊ธฐ๋Šฅ๋ณ„๋กœ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฆฌ (Model-View-Controller)
    โ†’ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ + ์žฌ์‚ฌ์šฉ์ฆ๊ฐ€ โœ…

  • ๊ฐ ๊ตฌ์„ฑ์š”์†Œ ๋…๋ฆฝ โ†’ ํ˜‘์—… ์‹œ, ๊ฐœ๋ฐ”๋ฅด์ด ํšจ์œจ์„ ๋†’์—ฌ์คŒ

  • ๊ฐœ๋ฐœ ํ›„, ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์ด ๋ณด์žฅ๋จ


6 MVCํŒจํ„ด ๋‹จ์ 

  • Model๊ณผ View๊ฐ€ ์„œ๋กœ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜์ง„ ์•Š๊ณ  ๋…๋ฆฝ์ ์ธ ์ƒํƒœ๋ผ ํ•˜์ง€๋งŒ,
    Controller๋ฅผ ํ†ตํ•œ ์†Œํ†ต์„ ํ•จ
    โ†’ ์˜์กด์„ฑ ์™„์ „ํžˆ ๋ถ„๋ฆฌ๋ถˆ๊ฐ€ โ›”๏ธ

  • View์™€ Model์ด Controller๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐ โ†’ Controller๊ฐ€ ๊ฑฐ๋Œ€ํ•ด์ง ๐Ÿšจ

profile
๐ŸฑSunyeon-Jeong, mallang developer๐Ÿฐ

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

comment-user-thumbnail
2023๋…„ 7์›” 20์ผ

์†Œ์ค‘ํ•œ ์ •๋ณด ์ž˜ ๋ดค์Šต๋‹ˆ๋‹ค!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ