Home
>
Spring
>
๐[Spring] ์ผ๋ฐ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต ๊ตฌ์กฐ์ ํด๋์ค ์์กด๊ด๊ณ.
Spring
Framework
๐[Spring] ์ผ๋ฐ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต ๊ตฌ์กฐ์ ํด๋์ค ์์กด๊ด๊ณ.
1๏ธโฃ ์ผ๋ฐ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์
๊ณ์ธต ๊ตฌ์กฐ.
- Controller : ์น MVC์ Controller ์ญํ .
- ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ ์ด๋ฅผ ์ฒ๋ฆฌํ ๋น์ฆ๋์ค ๋ก์ง(์๋น์ค ๋ ์ด์ด)์ ์ ๋ฌํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ์ฌ์ฉ์์๊ฒ ์๋ตํ๋ ์ญํ ์ ํฉ๋๋ค.
- ์ฃผ๋ก HTTP ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ์ฌ๋ฐ๋ฅธ ์๋ต์ ์์ฑํฉ๋๋ค.
- ์ปจํธ๋กค๋ฌ๋ ์ฌ์ฉ์๋ก๋ถํฐ ์
๋ ฅ์ ๋ฐ์ ํด๋น ์
๋ ฅ์ ์๋น์ค ๋ ์ด์ด๋ก ์ ๋ฌํ๊ณ , ์๋น์ค ๋ ์ด์ด์์ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํํฉ๋๋ค.
- ์ด๋ ์ฃผ๋ก ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ํธํฌ์ธํธ(์:
'/login'
, '/signup'
์ ๊ฐ์ URL)์ ๋์๋ฉ๋๋ค.
- Service : ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ.
- ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๊ณ์ธต์
๋๋ค.
- ์ปจํธ๋กค๋ฌ์ ๋ฆฌํฌ์งํ ๋ฆฌ ์ฌ์ด์์ ์ค๊ฐ ์ญํ ์ ํ๋ฉฐ, ์ฌ๋ฌ ๋ฆฌํฌ์งํ ๋ฆฌ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ๊ฐ๊ณตํ๊ณ , ์ด๋ฅผ ๋ค์ ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํฉ๋๋ค.
- ์๋น์ค ๊ณ์ธต์ ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง์ด ์์นํ๋ ๊ณณ์
๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์ ์ธ์ฆ, ๊ฒฐ์ ์ฒ๋ฆฌ, ์ด๋ฉ์ผ ์ ์ก ๋ฑ์ ์ฃผ์ ๊ธฐ๋ฅ์ด ์ด ๊ณ์ธต์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
- Repository: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผ, ๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ DB์ ์ ์ฅํ๊ณ ๊ด๋ฆฌ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํธ์์ฉํ๋ ๊ณ์ธต์
๋๋ค.
- ๋ฐ์ดํฐ์ ์ ์ฅ, ๊ฒ์, ๊ฐฑ์ , ์ญ์ ๋ฑ์ ์์
์ ์ฒ๋ฆฌํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ง์ ์ ์ธ ํต์ ์ ๋ด๋นํฉ๋๋ค.
- ๋ฆฌํฌ์งํ ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ SQL ์ฟผ๋ฆฌ๋ ORM(Object-Relational Mapping) ์์
์ ๋ด๋นํฉ๋๋ค.
- ์ด ๊ณ์ธต์ ์๋น์ค ๊ณ์ธต์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋, ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ญํ ์ ํฉ๋๋ค.
- Domain: ๋น์ฆ๋์ค ๋๋ฉ์ธ ๊ฐ์ฒด.
- ์๋ฅผ ๋ค์ด ํ์, ์ฃผ๋ฌธ ์ฟ ํฐ ๋ฑ๋ฑ ์ฃผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๊ณ ๊ด๋ฆฌ๋จ.
- ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ์ํฐํฐ(Entity)์ ๋น์ฆ๋์ค ๊ท์น์ ์ ์ํ๋ ๊ณ์ธต์
๋๋ค.
- ๋ณดํต ๊ฐ์ฒด๋ก ํํ๋๋ฉฐ, ๋น์ฆ๋์ค ๋ก์ง์ ์ผ๋ถ๋ฅผ ์บก์ํํฉ๋๋ค.
- ๋๋ฉ์ธ ๊ณ์ธต์ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ค์ํ ๊ฐ์ฒด๋ค(์:
'User'
, 'Product'
, 'Order'
๋ฑ)์ ์ ์ํ๊ณ , ์ด ๊ฐ์ฒด๋ค์ด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ํธ์์ฉํ๋์ง๋ฅผ ๋ํ๋
๋๋ค.
- ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ด๋ค ๋น์ฆ๋์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง์ ๋ํ ๋ชจ๋ธ์ ๋ํ๋
๋๋ค.
2๏ธโฃ ํด๋์ค ์์กด๊ด๊ณ.
- ํ์ ๋น์ฆ๋์ค ๋ก์ง์๋ ํ์ ์๋น์ค๊ฐ ์๋ค.
- ํ์์ ์ ์ฅํ๋ ๊ฒ์ ์ธํฐํ์ด์ค๋ก ์ค๊ณ ๋์ด์๋ค.
- ๊ทธ ์ด์ ๋ ์์ง ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ์ ์ ๋์ง ์์์์ ๊ฐ์ ํ๊ณ ์ค๊ณํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ทธ๋ฆฌ๊ณ ๊ตฌํ์ฒด๋ฅผ ์ฐ์ ์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌํ์ฒด๋ก ๋ง๋ค๊ฒ์ด๋ค.
- ๊ทธ ์ด์ ๋ ์ผ๋จ ๊ฐ๋ฐ์ ํด์ผํ๋ฏ๋ก ๊ต์ฅํ ๋จ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๊ตฌํ์ฒด๋ก ๋ง๋ ๋ค.
- ํฅํ์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌํ์ฒด๋ฅผ ๊ตฌ์ฒด์ ์ธ ๊ธฐ์ ์ด ์ ์ ์ด ๋๋ฉด(RDB, NoSQL ๋ฑ) ๊ต์ฒดํ ๊ฒ์ด๋ค.
- ๊ต์ฒดํ๋ ค๋ฉด Interface๊ฐ ํ์ํ๋ฏ๋ก Interface๋ฅผ ์ ์ํ ๊ฒ์ด๋ค.
- ์์ง ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ์ ์ ๋์ง ์์์, ์ฐ์ ์ธํฐํ์ด์ค๋ก ๊ตฌํ ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ ์ ์๋๋ก ์ค๊ณ
- ๋ฐ์ดํฐ ์ ์ฅ์๋ RDB, NoSQL ๋ฑ๋ฑ ๋ค์ํ ์ ์ฅ์๋ฅผ ๊ณ ๋ฏผ์ค์ธ ์ํฉ์ผ๋ก ๊ฐ์
- ๊ฐ๋ฐ์ ์งํํ๊ธฐ ์ํด์ ์ด๊ธฐ ๊ฐ๋ฐ ๋จ๊ณ์์๋ ๊ตฌํ์ฒด๋ก ๊ฐ๋ฒผ์ด ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ ์ ์ฅ์ ์ฌ์ฉ