[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿ๋ฒ”๋ธ”๋น„์˜ MVC Pattern

KIM YONG GUยท2023๋…„ 9์›” 30์ผ
0

์šฐ์•„ํ•œํ…Œํฌ

๋ชฉ๋ก ๋ณด๊ธฐ
18/41

MVC ํŒจํ„ด์˜ ์—ญ์‚ฌ

MVC๋ž€?

Model

  • ๋ฐ์ดํ„ฐ์™€ ํ–‰๋™์„ ๊ฐ–๋Š” ๊ฐ์ฒด
  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰ (์ƒํƒœ ๋ณ€ํ™” ์ฒ˜๋ฆฌ / ์ƒํƒœ ์ •๋ณด ๋ฐ˜ํ™˜)

View

  • ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐํ™”
  • ๋ชจ๋ธ์ด ์ฒ˜๋ฆฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์„œ ์‚ฌ์šฉ
  • ๋ฐ์ดํ„ฐ(DAO, Repository), ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง X

Controller

  • ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ํ•ด์„ํ•ด์—ฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜
  • ๋ชจ๋ธ๊ณผ ๋ทฐ๋ฅผ ๋Š์Šจํ•˜๊ฒŒ ์—ฐ๊ฒฐ
  • ๋ฐ์ดํ„ฐ์˜ ํ๋ฆ„ ์ œ์–ด

MVC ํŒจํ„ด ์‚ฌ์šฉ์ด์œ 

  • ๊ตฌ์„ฑ์š”์†Œ๋“ค์˜ ์žฌ์‚ฌ์šฉ
  • ํ™•์žฅ์„ฑ ์ฆ๊ฐ€
  • ์ค‘๋ณต ์ฝ”๋”ฉ ์ œ๊ฑฐ
  • ๊ฐ ์š”์†Œ๋“ค์— ์ง‘์ค‘

Layer

๋‹จ์ˆœํžˆ MVC๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ปจํŠธ๋กค๋Ÿฌ์— ๋Œ€ํ•œ ๋กœ์ง์ด ๋งŽ์ด ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

5-Layer

  • ๋น„๋Œ€ํ•œ ์ปจํŠธ๋กค๋Ÿฌ
  • ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ค‘๋ณต ๋กœ์ง
  • DB

Business Logic layer - Service Layer

  • ํด๋ž˜์Šค ๊ฐ„์˜ ๊ด€๊ณ„ ๊ด€๋ฆฌ
  • ์ƒํƒœ ์ €์žฅ
  • ํŠธ๋žœ์ ์…˜
  • Control - Persistance ๊ณ„์ธต์˜ ์—ฐ๊ฒฐ

Business Logic layer - Domain Layer

  • ๋ฐ์ดํ„ฐ์™€ ํ–‰์œ„๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด
  • ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง
  • ์ฃผ์š” ๊ฒ€์ฆ
  • Persistance layer์— ๋งตํ•‘

Persistance layer

  • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ (CRUD)
  • DAO ํŒจํ„ด, ORM

Domain layer

  • ๊ฐ ๊ณ„์ธต ์‚ฌ์ด์—์„œ ์ „๋‹ฌ๋˜๋Š” ๊ฐ์ฒด
  • DTO ํŒจํ„ด
  • ๋Œ€๋ถ€๋ถ„ ๋„๋ฉ”์ธ ๋ชจ๋ธ๋กœ DTO๋กœ ์‚ฌ์šฉ

์œ ํšจ์„ฑ ๊ฒ€์ฆ

View

  • ๊ฐ„๋‹จํ•œ ๊ฒ€์ฆ
  • ๋น„์–ด์žˆ๋Š” ๊ฐ’
  • ์ ์ ˆํ•˜์ง€ ์•Š์€ ํƒ€์ž… (๋ฐ์ดํ„ฐํ˜•)

Controller

  • ํŒŒ๋ผ๋ฏธํ„ฐ ์กด์žฌ์œ ๋ฌด ๊ฒ€์ฆ
  • @PathVariable
  • @RequestBody

Model

  • ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ
  • @Valid
  • ๋กœ์ง์— ๋Œ€ํ•œ ๊ฒ€์ฆ

MVC์˜ ๋Œ€์•ˆ

MVC - ์ปจํŠธ๋กค๋Ÿฌ์™€ ๋ทฐ์˜ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ
MVP - Presenter๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ทฐ์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ฒฐํ•ฉ
MVVM - View๊ฐ€ ViewModel์„ ๊ตฌ๋…

profile
Engineer, Look Beyond the Code.

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