Web Layer
1. ํํ ์ฌ์ฉํ๋ ์ปจํธ๋กค๋ฌ์ ํ
ํ๋ฆฟ ์์ง์ ์์ญ
2. ํํฐ, ์ธํฐ์
ํฐ, ์ปจํธ๋กค๋ฌ ์ด๋๋ฐ์ด์ค ๋ฑ ์ธ๋ถ ์์ฒญ๊ณผ ์๋ต์ ๋ํ ์ ๋ฐ์ ์ธ ์์ญ์ ์๋ฏธํ๋ค.
Service Layer
1. `@Service`์์ ์ฌ์ฉ๋๋ ์๋น์ค ์์ญ
2. ์ผ๋ฐ์ ์ผ๋ก Controller์ Repository์ ์ค๊ฐ ์์ญ์์ ์ฌ์ฉ๋๋ค.
3. @Transactional์ด ์ฌ์ฉ๋์ด์ผ ํ๋ค.
Repository Layer
1. Database์ ๊ฐ์ ์ ์ฅ์์ ์ ๊ทผํ๋ ์์ญ
2. ์ด์ ์ ์์ฃผ ์ฌ์ฉ๋๋ Dao ์์ญ์ด๋ค.
DTOs
1. DTO๋ ๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค.
2. ๋ทฐ ํ
ํ๋ฆฟ ์์ง์์ ์ฌ์ฉ๋ ๊ฐ์ฒด๋ Repository๊ฐ ์๋ต์ผ๋ก ๋๊ฒจ์ฃผ๋ ๊ฐ์ฒด ๋ฑ์ ๋งํ๋ค.
Domain Model
1. ๊ฐ๋ฐ ๋์(๋๋ฉ์ธ)์ ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ๊ด์ ์์ ์ดํดํ ์ ์๊ณ ๊ณต์ ํ ์ ์๋๋ก ๋จ์ํ ์ํจ ๊ฒ
2. ์๋ฅผ ๋ค์ด ํ์ ์ฑ์ด๋ผ๊ณ ํ๋ฉด ๋ฐฐ์ฐจ, ํ์น, ์๊ธ์ด ๋ชจ๋ ๋๋ฉ์ธ์ด ๋ ์ ์๋ค.
3. `@Entity` ๊ฐ ์ฌ์ฉ๋๋ ๊ณณ์ด ๋๋ฉ์ธ ๋ชจ๋ธ์ด๋ผ๊ณ ํ ์ ์๋ค.
4. ๋ฌด์กฐ๊ฑด DB ํ
์ด๋ธ๊ณผ ๊ด๊ณ๊ฐ ์๋ ๊ฒ์ ์๋๋ฉฐ VO์ ๊ฐ์ ๋จ์ ๊ฐ์ฒด๋ ํด๋น๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋น์ฆ๋์ค ๋ก์ง์ ์ฃผ๋ก ์ด๋์ ์ฒ๋ฆฌ๋ ๊น?
- Domain์ด ๋ด๋นํ๋ค.
- ๋ง์ฝ ์๋น์ค ๊ณ์ธต์์ ๋ชจ๋ ๋น์ฆ๋์ค ๋ก์ง์ด ์ฒ๋ฆฌ๋๋ค๋ฉด ๊ฐ์ฒด๋ ๋จ์ํ ๋ฐ์ดํฐ ๋ฉ์ด๋ฆฌ์ ๋ถ๊ณผํ๋ฉฐ ์๋น์ค ๊ณ์ธต์ ์ญํ (์ ํธ๋์ญ์ , ๋๋ฉ์ธ ๊ฐ ์๋ณด์ฅ)์ด ๋ฌด์๋ฏธํด์ง ๊ฒ์ด๋ค.