๋ฐ์—”์œผ๋กœ ์„ฑ์žฅ์ค‘ ๐ŸŒฑ

์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค 5๊ธฐ ๋ฐฑ์—”๋“œ ํ”„๋ฆฌ์ฝ”์Šค

[์šฐํ…Œ์ฝ” 5๊ธฐ ํ”„๋ฆฌ์ฝ”์Šค] MVC ํŒจํ„ด

์จ๋ฐ 2022. 11. 30. 17:38

ํ”„๋ฆฌ์ฝ”์Šค ๋งˆ์ง€๋ง‰ ๋ฏธ์…˜(4์ฃผ ์ฐจ)์—์„œ์•ผ MVC๋ฅผ ๋’ค๋Šฆ๊ฒŒ ์•Œ๊ฒŒ ๋˜์–ด ์ ์šฉํ•ด๋ณด์•˜์—ˆ๋‹ค.

(์ ์šฉํ•œ ๊ฒƒ๋„ ์ž˜ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค...ใ… ใ…  ๋ฌด์–ธ๊ฐ€ ์•Œ๊ฒŒ ๋˜๊ณ , ๋ฐฐ์šธ์ˆ˜๋ก ๋‚˜์— ๋Œ€ํ•œ ๋ถ€์กฑํ•จ์ด ๋А๊ปด์ง„๋‹ค.)

 

MVC๋ฅผ ์ ์šฉํ•˜๊ณ  ๊ณต๋ถ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํ…Œ์ฝ”ํ†ก์„ ๋จผ์ € ์ฐพ์•„๋ดค๊ณ  ์ด๋ฅผ ์ •๋ฆฌํ–ˆ๋‹ค.

 

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป๐Ÿ‘จ๐Ÿป‍๐Ÿ’ปแ„’แ…ขแ„…แ…ต&แ„‰แ…งแ†ซ์˜ MVC ํŒจํ„ด

[ MVC ํŒจํ„ด์ด๋ž€? ]
Model, View, Controller ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ 3๊ฐ€์ง€ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•œ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

MVC ํŒจํ„ด

Model: ๊ฐ’๊ณผ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด

View: ๋ชจ๋ธ์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐํ™”
Controller: ๋ชจ๋ธ ๊ฐ์ฒด๋กœ์˜ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ œ์–ด, ๋ทฐ์™€ ๋ชจ๋ธ์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌ

[ MVC ํŒจํ„ด ์žฅ์  ]
- ๊ฐ ์ปดํฌ๋„ŒํŠธ์˜ ์ฝ”๋“œ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.

- ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
- ๊ตฌํ˜„์ž๋“ค ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

[ Service๋ž€? ]
๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์ด๋‹ค.
๋น„์ฆˆ๋‹ˆ์Šค ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ„๋„์˜ Service ๊ฐ์ฒด์—์„œ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๊ณ  ์ปจํŠธ๋กค๋Ÿฌ๋Š” Service ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.

[ Repository๋ž€? ]
DAO(Data Access Object)์™€ ์œ ์‚ฌํ•˜๋‹ค.

๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๋ฉ”์„œ๋“œ๋ฅผ ๋ณ„๋„์˜ Repository ๊ฐ์ฒด์—์„œ ๊ตฌํ˜„ํ•œ๋‹ค.
Service๋Š” Repository์˜ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿง€ ์ œ๋ฆฌ์˜ MVC ํŒจํ„ด


[ MVC๊ฐ€ ์ƒ๊ฒจ๋‚œ ์ด์œ  ]

์œ ์ง€๋ณด์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ๋ฅผ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋œ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

[ MVC ๊ตฌ์„ฑ ]
Model: ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ๋ถ€๋ถ„
View: ์‚ฌ์šฉ์žํ•œํ…Œ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„
Controller: Model ๊ณผ View ๋ฅผ ์ด์–ด์ฃผ๋Š” ๋ถ€๋ถ„

[ MVC๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ• ]
- Model
๋ชจ๋ธ์€ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ทฐ์— ์˜์กดํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋ชจ๋ธ ๋‚ด๋ถ€์— ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ทฐ์— ๊ด€๋ จ๋œ ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ ๋œ๋‹ค. (์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ทฐ์— ํด๋ž˜์Šค๋ฅผ importํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋œ๋‹ค.)

- View
๋ทฐ๋Š” ๋ชจ๋ธ์—๋งŒ ์˜์กดํ•ด์•ผ ํ•˜๊ณ , ์ปจํŠธ๋กค๋Ÿฌ์—๋Š” ์˜์กดํ•˜๋ฉด ์•ˆ ๋œ๋‹ค.
์ฆ‰, ๋ทฐ ๋‚ด๋ถ€์— ๋ชจ๋ธ์˜ ์ฝ”๋“œ๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ , ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์œผ๋ฉด ์•ˆ ๋œ๋‹ค.

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

- Controller
์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ๊ณผ ๋ทฐ์— ์˜์กดํ•ด๋„ ๋œ๋‹ค.
์ฆ‰, ์ปจํŠธ๋กค๋Ÿฌ ๋‚ด๋ถ€์—๋Š” ๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
→ ์™œ๋ƒํ•˜๋ฉด, ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ชจ๋ธ๊ณผ ๋ทฐ์˜ ์ค‘๊ฐœ์ž ์—ญํ• ์„ ํ•˜๋ฉด์„œ ์ „์ฒด ๋กœ์ง์„ ๊ตฌ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋ทฐ๊ฐ€ ๋ชจ๋ธ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ, ๋ฐ˜๋“œ์‹œ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋ฐ›์•„์•ผ ํ•œ๋‹ค.


 

ํ…Œ์ฝ”ํ†ก ๋•๋ถ„์— MVC์— ๋Œ€ํ•ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋ฏธ์…˜์— ์ ์šฉํ•˜๋Š” ์ผ๋งŒ ๋‚จ์•˜๋‹ค.

 

์ด๋ก ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋”๋ผ๋„ ์‹ค์ „์€ ๋Š˜ ์–ด๋ ค์šด ๊ฒƒ ๊ฐ™๋‹ค.

 

๋ฏธ์…˜์— ์‹ค์ œ๋กœ ์ ์šฉํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์žˆ์–ด์„œ, ์ „ ๊ธฐ์ˆ˜๋ถ„๋“ค์˜ ๋ฏธ์…˜ ์ฝ”๋“œ๋ฅผ ์—ด์‹ฌํžˆ ๋ดค๋‹ค...

 

MVC ์ฝ”๋“œ๋ฅผ ์ ์šฉํ•˜์‹  ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์ •๋ง ๋งŽ์€ ๊ณ ๋ฏผ๋“ค์„ ํ–ˆ๋‹ค.

์™œ ๋งŽ์€ ๊ณ ๋ฏผ์„ ํ–ˆ๋ƒ๋ฉด...

 

 

MVC๋ฅผ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ค ๋‹ฌ๋ž๋‹ค...๐Ÿ˜ฒ

 

  1. model, view, controller
  2. model, view, controller, utils
  3. model, view, controller, utils, service
  4. model, view, controller, utils, service, repository, dto, validator, exception

 

์ด๋ ‡๊ฒŒ 4๊ฐ€์ง€ ์ •๋„๋ฅผ ๋ดค๊ณ , ๋‚ด ํ”„๋ฆฌ์ฝ”์Šค ๋งˆ์ง€๋ง‰ ๋ฏธ์…˜์€ model, view, controller, service๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค.

 

๋‚ด๊ฐ€ ํ–ˆ๋˜ ๋ฐฉ์‹์ฒ˜๋Ÿผ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒŒ ๋งž๋Š”์ง€ ์ž์‹ ๋„ ์—†์—ˆ๊ณ , ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ˆ๊นŒ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”์ง€ ๋„ˆ๋ฌด๋‚˜ ํ—ท๊ฐˆ๋ ธ๋‹ค.

(๋‚ด ๋ฐฉ์‹์ธ model, view, controller, service ๋งŒ์œผ๋กœ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.)

 

๊ทธ๋ž˜๋„ ๋‚ด ๋ฐฉ์‹๋ณด๋‹ค, 4๋ฒˆ์ฒ˜๋Ÿผ ํ•˜๋Š” ๊ฒŒ ๊ฐ€์žฅ ์ž˜ ์„ค๊ณ„๋˜์—ˆ๋‹ค๊ณ (๋” ์ฒด๊ณ„๊ฐ€ ๊ฐ–์ถฐ์ง„ MVC๋ผ๊ณ ) ์ƒ๊ฐํ–ˆ๊ณ  ๋ฌด์ž‘์ • ๋”ฐ๋ผ ํ•˜๋ฉด์„œ ๊ทผ๋ž˜ ๋ฉฐ์น ์„ ๊ณต๋ถ€ํ–ˆ๋‹ค.

๋‚˜๋Š” 4๋ฒˆ์ฒ˜๋Ÿผ ํ•˜์‹  ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  MVC ํŒจํ„ด๊ณผ ์นœํ•ด์ง€๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

๊ทผ๋ฐ, ์ฝ”๋“œ๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ ๋˜๋Š” ๋ถ€๋ถ„๋„ ์žˆ์—ˆ๊ณ , ๋‚ด๊ฐ€ ๋‹ค๋ฅธ ๋ฏธ์…˜์ด ์ฃผ์–ด์กŒ์„ ๊ฒฝ์šฐ ์ด๋ ‡๊ฒŒ ๋˜‘๊ฐ™์ด ์ ์šฉํ•˜๊ณ  ์‹œ๊ฐ„ ๋‚ด์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„์ง€?๋ผ๋Š” ์˜๋ฌธ์ด ๋“ค์—ˆ๋‹ค. (๋‚˜๋Š” ์ด์ œ์•ผ MVC ํŒจํ„ด์„ ์ ์šฉํ•ด๋ณด๋Š” ์‚ฌ๋žŒ์ด๊ณ , ์‹ค๋ ฅ์— ๋น„ํ•ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋„ˆ๋ฌด ์ž˜ํ•˜๊ณ  ์‹ถ์€ ์š•์‹ฌ์ด ์•ž์„ฐ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.)

 

๊ทธ๋ž˜์„œ, ๋‚ด๊ฐ€ ์ข€ ๋” MVC ํŒจํ„ด์„ ์ฐจ๊ทผ์ฐจ๊ทผ ์ •๋ณตํ•ด๋‚˜๊ฐ€๋ฉฐ 4๋ฒˆ์ฒ˜๋Ÿผ ์Šค์Šค๋กœ ๊ตฌํ˜„ํ•  ์ž์‹ ์ด ์ƒ๊ฒผ์„ ๋•Œ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

 

์•„์‰ฝ์ง€๋งŒ, 3๋ฒˆ ํŒจํ„ด์œผ๋กœ ๊ณต๋ถ€ํ•ด ๋‚˜์•„๊ฐ€๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

 

์ด์ œ ๊ทธ๋™์•ˆ ์ง„ํ–‰ํ–ˆ๋˜ ๋ฏธ์…˜๋“ค์„ 3๋ฒˆ ํŒจํ„ด๊ณผ ๊ฐ™์ด ๋‹ค์‹œ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค.