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