์๋น์ค(Service) ํด๋์ค์ ์ญํ
์๋น์ค(Service) ํด๋์ค๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ฉฐ, ์ปจํธ๋กค๋ฌ(Controller)์
๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต(Entity์ Repository) ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
๐ ์๋น์ค์ ์ญํ
1. ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ
- ์๋น์ค ํด๋์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ฆํ๊ณ , ๋ก์ง์ ์คํํ๋ฉฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋๊ธฐ๋ณด๋ค๋ Repository๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฑฐ๋ ์์ ํ๋ค.
2. ํธ๋์ญ์ ๊ด๋ฆฌ
- *์๋น์ค ๊ณ์ธต์์ ํธ๋์ญ์ ์ ์์ํ๊ณ ์ข ๋ฃํ๋ค.
- Spring์์ @Transactional์ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ๋จ์๋ก ์์ ์ ์ฒ๋ฆฌํ๋ค.
โญ๏ธ ์๋น์ค ๊ณ์ธต์ ์ญํ ์์ [→ Service๋ ์๋น์ค ๊ณ์ธต์ ์ธํฐํ์ด์ค]

- ๋น์ฆ๋์ค ๋ก์ง ์ ์: ์ด ๊ณ์ธต์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฒ๋ฆฌ๋ ํ๋ฉด ํ์์ ์ง์ ๊ด๋ จ์ด ์๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ค.
- ํด๋์ค ๊ตฌํ์ ์ํ ์ฒญ์ฌ์ง ์ ๊ณต: ์ธํฐํ์ด์ค๋ ์๋น์ค์ ๊ธฐ๋ฅ(๋ฉ์๋)์ ์ ์ํ๊ณ , ์ด๋ฅผ ์ค์ ๋ก ๊ตฌํํ๋ ํด๋์ค(ServiceImpl)๋ ๊ตฌ์ฒด์ ์ธ ๋ก์ง์ ๊ตฌํํ๋ค.
- ๊ธฐ๋ฅ์ ๋ช ํ์ฑ ๋ณด์ฅ: ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ตฌํ ํด๋์ค๊ฐ ์ด๋ค ๊ธฐ๋ฅ์ ์ ๊ณตํด์ผ ํ๋์ง ๋ช ํํ๊ฒ ์ ์ํ ์ ์๋ค.
3. ์ปจํธ๋กค๋ฌ์ Repository ๊ฐ์ ๋ถ๋ฆฌ
- ์ปจํธ๋กค๋ฌ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ๋ฐํํ๋ ์ญํ ๋งํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ด๋ ๋น์ฆ๋์ค ๋ก์ง์ ์๋น์ค์์ ์ฒ๋ฆฌํ๋ค.
- ์ด๋ฅผ ํตํด ๊ฐ ๊ณ์ธต์ ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ์ฝ๋ ์ ์ง๋ณด์๋ฅผ ์ฝ๊ฒ ํ ์ ์๋ค.