๋ ์ง:2025-10-23
-3 Layer Architecture ๊ตฌ์กฐ ์ดํด
-Controller, Service, Repository ๊ฐ ๊ณ์ธต์ ์ญํ ๊ณผ ์ฑ
์ ํ์
-๊ณ์ธต ๊ฐ ํต์ ๊ท์น ์ดํด
-DTO(Data Transfer Object) ๊ฐ๋
์ดํด

๐น3 Layer Architecture(3๊ณ์ธต ๊ตฌ์กฐ) ๋
์ ํ๋ฆฌ์ผ์ด์
์ ์ญํ ์ ๋ฐ๋ผ 3๊ฐ์ ๋
ผ๋ฆฌ์ ๊ณ์ธต์ผ๋ก ๋ถ๋ฆฌํ๋ ๊ตฌ์กฐ์
๋๋ค.
์ด ๊ตฌ์กฐ๋ ์ฝ๋์ ์ ์ง๋ณด์์ฑ, ์ฌ์ฌ์ฉ์ฑ, ํ์ฅ์ฑ์ ๋์ด๋ ํต์ฌ์ ์ธ ์ค๊ณ ๋ฐฉ์์ ๋๋ค.
๐น 3๊ฐ์ ์ฃผ์ ๊ณ์ธต
| ๊ณ์ธต | ๋ค๋ฅธ ์ด๋ฆ | ์ญํ |
|---|---|---|
| Controller Layer | Presentation Layer | ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ๊ณ ์๋ต์ ๋ฐํํ๋ ๊ณ์ธต |
| Service Layer | Business Layer / Application Layer | ๋น์ฆ๋์ค ๋ก์ง(ํต์ฌ ๊ธฐ๋ฅ)์ ์ฒ๋ฆฌํ๋ ๊ณ์ธต |
| Repository Layer | Data Access Layer | ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ํธ์์ฉํ๋ ๊ณ์ธต |
๐น ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ
โ ๊ฐ ๊ณ์ธต์ด ๋งก์ ์ผ๋ง ์ํ
๐น ์ ์ง๋ณด์ ์ฉ์ด์ฑ
โ ํ ๊ณ์ธต ์์ ์ ๋ค๋ฅธ ๊ณ์ธต ์ํฅ ์ต์ํ
๐น ๊ฐ๋
์ฑ ๋ฐ ์ดํด๋ ํฅ์
โ ์ญํ ์ด ๋ช
ํํด ์ฝ๋ ํ๋ฆ ํ์
์ด ์ฌ์
๐น ํ
์คํธ ์ฉ์ด
โ ๊ฐ ๊ณ์ธต ๋จ์๋ก ๋
๋ฆฝ์ ์ธ ํ
์คํธ ๊ฐ๋ฅ
๐น ํ์ฅ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ
โ ํน์ ๊ณ์ธต๋ง ๊ต์ฒดํ๊ฑฐ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
์ฌ์ฉ์ ์์ฒญ(Request) ์ ๋ฐ์ *์๋ต(Response) *์ ๋ฐํํ๋ ๊ณ์ธต
์น ์ ํ๋ฆฌ์ผ์ด์
์ ์
๊ตฌ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
๐น ํด์ผ ํ ์ผ
-HTTP ์์ฒญ ๋งคํ (@GetMapping, @PostMapping ๋ฑ)
-์์ฒญ ๋ฐ์ดํฐ ๊ฒ์ฆ (@RequestParam, @RequestBody ๋ฑ)
-์๋ต ๋ฐ์ดํฐ ๋ณํ ๋ฐ ๋ฐํ
-์์ธ ์ฒ๋ฆฌ
๐น ํ์ง ๋ง์์ผ ํ ์ผ
-๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ
-๋ฐ์ดํฐ๋ฒ ์ด์ค ์ง์ ์ ๊ทผ
๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ํต์ฌ ๊ณ์ธต์ผ๋ก,
โ๋ฌด์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฒ์ธ๊ฐโ๋ฅผ ๋ด๋นํฉ๋๋ค.
๐น ํด์ผ ํ ์ผ
-๋น์ฆ๋์ค ๊ท์น ๊ตฌํ
-๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฆ
-์ฌ๋ฌ ๋ฐ์ดํฐ ์์ค ์กฐํฉ
-ํธ๋์ญ์
๊ด๋ฆฌ (@Transactional)
๐น ํ์ง ๋ง์์ผ ํ ์ผ
-HTTP ์์ฒญ/์๋ต ์ฒ๋ฆฌ
-SQL ์ฟผ๋ฆฌ ์ง์ ์์ฑ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ํต์ ํ๋ ๊ณ์ธต์ผ๋ก,
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ฑฐ๋ ์กฐํํ๋ ์ญํ ์ ๋ด๋นํฉ๋๋ค.
๐น ํด์ผ ํ ์ผ
-CRUD(Create, Read, Update, Delete) ์ฐ์ฐ ์ํ
-์ฟผ๋ฆฌ ์ต์ ํ
-์ํฐํฐ(Entity) ๋งคํ ๊ด๋ฆฌ
๐น ํ์ง ๋ง์์ผ ํ ์ผ
-๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ
-HTTP ์๋ต ์์ฑ
| ๊ตฌ๋ถ | ํ์ฉ ์ฌ๋ถ | ์ค๋ช |
|---|---|---|
| Controller โ Service | โ ํ์ฉ | ์ฌ์ฉ์์ ์์ฒญ์ ์๋น์ค ๋ก์ง์ผ๋ก ์ ๋ฌ |
| Service โ Repository | โ ํ์ฉ | ๋ก์ง ์ํ ํ ๋ฐ์ดํฐ ์ ๊ทผ ์์ฒญ |
| Controller โ Repository | โ ๊ธ์ง | ๊ณ์ธต์ ๊ฑด๋๋ฐ๋ ์ ๊ทผ์ ๊ตฌ์กฐ๋ฅผ ๊นจ๋จ๋ฆผ |
| Repository โ Controller | โ ๊ธ์ง | ํ์ ๊ณ์ธต์ด ์์ ๊ณ์ธต์ ํธ์ถํด์๋ ์ ๋จ |
๐ ์ฆ, ์์ ๊ณ์ธต โ ํ์ ๊ณ์ธต ํธ์ถ๋ง ํ์ฉ๋ฉ๋๋ค.
๐น DTO๋?

๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํ ์์ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ก,
๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
๐น DTO์ ์ญํ
-Client โ Server ๊ฐ ๋ฐ์ดํฐ ์ ๋ฌ
->SON ์์ฒญ/์๋ต์ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํ
-๊ณ์ธต ๊ฐ ๋ฐ์ดํฐ ์ด๋
->Controller โ Service, Service โ Repository ๋ฑ์์ ์ฌ์ฉ ๊ฐ๋ฅ
-๋น์ฆ๋์ค ๋ก์ง ์์
->์ค์ง ๋ฐ์ดํฐ ์ ๋ฌ๋ง ๋ด๋น
๐น ์์ ๊ฐ๋ ํ๋ฆ
1.Client๊ฐ JSON ๋ฐ์ดํฐ๋ฅผ ์ ์ก
2.Controller์์ @RequestBody๋ฅผ ํตํด DTO๋ก ๋งคํ
3.DTO ๋ฐ์ดํฐ๋ฅผ Service๋ก ์ ๋ฌ
4.Service์์ ์ฒ๋ฆฌ ํ ๋ค์ DTO๋ก ์๋ต
| ๊ตฌ๋ถ | ํต์ฌ ํฌ์ธํธ |
|---|---|
| Controller | ์์ฒญ๊ณผ ์๋ต ์ฒ๋ฆฌ ๋ด๋น |
| Service | ๋น์ฆ๋์ค ๋ก์ง ๋ด๋น |
| Repository | ๋ฐ์ดํฐ ์ ๊ทผ ๋ฐ ์ ์ฅ ๋ด๋น |
| DTO | ๋ฐ์ดํฐ ์ ๋ฌ์ฉ ๊ฐ์ฒด (๋ก์ง X) |
| ํต์ ๊ท์น | ์์ โ ํ์ ๊ณ์ธต๋ง ํธ์ถ ๊ฐ๋ฅ |
| ๊ตฌ์กฐ์ ์ฅ์ | ์ ์ง๋ณด์์ฑ, ์ฌ์ฌ์ฉ์ฑ, ํ์ฅ์ฑ ํฅ์ |