๐Ÿ“ŒWeb Application Layer

Gyeomiiยท2022๋…„ 7์›” 6์ผ
0

DDITJava

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-thumbnail

Controller

  • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ด์šฉํ•  ์—”๋“œํฌ์ธํŠธ
  • ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ง€ ์ •์˜
  • ํ™”๋ฉด์—์„œ ๋„˜์–ด์˜ค๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•ด ์„œ๋น„์Šค ๊ฐ์ฒด๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์—ญํ• 

Service

  • ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๊ตฌํ˜„
  • Httpํ†ต์‹ ์„ ์œ„ํ•œ ๊ฐ์ฒด(request, response)๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์œผ๋ฉด ์•ˆ๋œ๋‹ค.
    • ์ด ์ž‘์—…์€ ์ปจํŠธ๋กค๋Ÿฌ ์—์„œ๋งŒ)
  • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์˜์—ญ๊ณผ ๋„๋ฉ”์ธ ์˜์—ญ์„ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” ๋งค๊ฐœ์ฒด

Repository

  • ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ์ ‘๊ทผ
  • Domain์˜ CRUD ์—ญํ•  (Domain ๊ฐ์ฒด๋ฅผ DB์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ)
  • DAO (=Repository)
    • Service์™€ Controller๋ฅผ ์—ฐ๊ฒฐ

Domain

  • Entityํด๋ž˜์Šค ๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค
  • DTO : ๊ฐ ๊ณ„์ธต๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ ๊ฐ์ฒด (=VO)
    • ๋กœ์ง์„ ๊ฐ–์ง€ ์•Š๊ณ  getter, setter๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค.

Spring Web Layer

Web Layer (Presentation Layer)

  • ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ์™€ JSP๋“ฑ์˜ ๋ทฐ ํ…œํ”Œ๋ฆฟ ์˜์—ญ
  • ํ•„ํ„ฐ, ์ธํ„ฐ์…‰ํ„ฐ, ์ปจํŠธ๋กค๋Ÿฌ, ์–ด๋“œ๋ฐ”์ด์Šค ๋“ฑ ์™ธ๋ถ€ ์š”์ฒญ๊ณผ ์‘๋‹ต์— ๋Œ€ํ•œ ์ „๋ฐ˜์ ์ธ ์˜์—ญ

Service Layer (Business Logic Layer)

  • ์ปจํŠธ๋กค๋Ÿฌ์™€ DAO์˜ ์ค‘๊ฐ„ ์˜์—ญ
  • ํŠธ๋žœ์žญ์…˜์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Œ
    • ํŠธ๋žœ์žญ์…˜ : ์ชผ๊ฐค ์ˆ˜ ์—†๋Š” ์—…๋ฌด ์ฒ˜๋ฆฌ์˜ ์ตœ์†Œ๋‹จ์œ„
      • A๊ฐ€ B์—๊ฒŒ 1000์›์„ ์ง€๊ธ‰ํ•˜๊ณ  B๊ฐ€ ๊ทธ ๋ˆ์„ ๋ฐ›๋Š” ์ผ๋ จ์˜ ๊ณผ์ •
      • A๊ฐ€ ๋ˆ์„ ์ง€๋ถˆํ–ˆ์œผ๋‚˜ B๊ฐ€ ๋ˆ์„ ๋ฐ›์ง€ ๋ชปํ•˜๋ฉด ๊ทธ ๊ฑฐ๋ž˜๋Š” ์„ฑ๋ฆฝX
      • ๋ˆ์˜ ์ง€๋ถˆ๊ณผ ๋ฐ›๋Š” ํ–‰์œ„๋Š” ๋ณ„๊ฐœ๋กœ ๋ถ„๋ฆฌ ๋  ์ˆ˜ ์—†์Œ. ํ•˜๋‚˜์˜ ๋‚ด์—ญ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ๋‹จ์ผ ๊ฑฐ๋ž˜

Repository Layer

  • DB๊ฐ™์€ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ์ ‘๊ทผํ•˜๋Š” ์˜์—ญ

DTOs

  • DTO๋Š” ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•จ
  • ๋ทฐ ํ…œํ”Œ๋ฆฟ ์—”์ง„์—์„œ ์‚ฌ์šฉ๋  ๊ฐ์ฒด๋‚˜ Repository์—์„œ ๊ฒฐ๊ณผ๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฐ์ฒด๋“ฑ์„ ๊ฐ€๋ฆฌํ‚ด

Domain Model

  • ๋„๋ฉ”์ธ์ด๋ผ ๋ถˆ๋ฆฌ๋Š” ๊ฐœ๋ฐœ ๋Œ€์ƒ์„ ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™์ผํ•œ ๊ด€์ ์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ  ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹จ์ˆœํ™” ์‹œํ‚จ ๊ฑธ ๋„๋ฉ”์ธ ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•จ.
  • Entity์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ด€๊ณ„๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๊ณ  VO์ฒ˜๋Ÿผ ์—†์„ ์ˆ˜๋„ ์žˆ์Œ.

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ domain์ด ๋‹ด๋‹นํ•˜๊ณ  Service๋Š” Repositort์™€ Domain์˜ ์ˆœ์„œ๋งŒ ๋ณด์žฅํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์Œ์‹ ์ฃผ๋ฌธ์„ ์ทจ์†Œํ•œ๋‹ค๊ณ  ํ•  ๋•Œ service์—์„  repository์—์„œ ์ทจ์†Œํ•  ์ฃผ๋ฌธ์„ ๊ฐ€์ ธ์™€์„œ domain์— ์ •์˜๋œ ์ฃผ๋ฌธ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ทจ์†Œ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•จ.

Application Layer

  • ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต

Presentation Layer(Servlet + JSP)

  • ์‚ฌ์šฉ์ž์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•ด์ฃผ๋Š” ๋ ˆ์ด์–ด
  • ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค
  • ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™” / ๋ณตํ˜ธํ™”
  • ๋ฌธ์ž / ๋ฌธ์ž์—ด ๋ณ€ํ™˜
  • ๋ฐ์ดํ„ฐ ์••์ถ•
  • ๊ทธ๋ž˜ํ”ฝ ์ฒ˜๋ฆฌ

Business Layer(Service)

  • ํ•ต์‹ฌ์—…๋ฌด๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์„ ๊ธฐ์ˆ 
  • ํ•ต์‹ฌ ์—…๋ฌด ๋กœ์ง์˜ ๊ตฌํ˜„
  • ๋ฐ์ดํ„ฐ์˜ ์ ํ•ฉ์„ฑ ๊ฒ€์ฆ
  • ๋‹ค๋ฅธ๊ณ„์ธต๋“ค๊ณผ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต
  • ํ•ด๋‹น ๊ณ„์ธต์˜ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ด€๋ฆฌ

Repository Layer(DAO + ORM)

  • ํ”ํžˆ Model์ด๋ผ๊ณ  ํ•จ Spring์—์„œ๋Š” Repository๋ผ๊ณ  ํ•จ
  • DAO, DTO, VO ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ด๊ฑธ๋กœ DB์™€ ์—ฐ๊ฒฐ
  • ์ €์žฅ์†Œ์— ๋งž๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ ˆ์ด์–ด

Spring์€ ๊ฐ ๋ ˆ์ด์–ด๋“ค์˜ ์ ‘์ฐฉ์ œ

profile
๊น€์„ฑ๊ฒธ

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