

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์ ๊ฐ ๋ ์ด์ด๋ค์ ์ ์ฐฉ์