DOing
[WIL3] ํ์ ํด ํ์ฉํ๊ธฐ์ Spring ์์ ๋ณธ๋ฌธ
๐ WIL 3
2021.6.21 ~ 2021.6.27
โต ํ์ ํด ํ์ฉํ๊ธฐ : ๋ ธ์
ํญํด์์ ํ ํ์ ๋ค์ ๊ฑฐ์น๋ฉด์ ํ์ ํด์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํด์ผ๊ฒ ๋ค๊ณ ๋๋ผ๊ณ ์๋ค. ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋์์๋ ํ์๋ค๊ฐ์ ์ ๋ฌธ์ ํ์ด์ ๋ํ ์ฝ๋์ ํด์์ ์๋ก ๊ณต์ ํ๊ธฐ ์ํด์ ๋ ธ์ ์ ์ฌ์ฉํ๋ค. ๊ทธ๋์์ ๊ฐ์ธ์ ์ธ ๋ ธํธ ์ฉ๋๋ก๋ง ๋ ธ์ ์ ์ฌ์ฉํ์๋๋ฐ ํ์ ํด๋ก์จ ๋ ธ์ ์ ์ฒ์ ์จ๋ณด๊ฒ๋์๋ค. ๋ด๊ฐ ๋๋ ํ์ ํด๋ก์จ์ ๋ ธ์ ์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์ง๊ด์ ์ด๋ค๋ณด๋ ๋ ธ์ ์ ์ฌ์ฉํด๋ณธ ์ ์ด ์๋ ํ์๋ค๋ ๋น ๋ฅด๊ฒ ์ ์ํ ์ ์๋ค.
2. ๊ณต์ ํ๊ธฐ์ ์ต์ ์ ์ธ๋ฐํ๊ฒ ์กฐ์ ํ ์ ์๋ค. (ํธ์ง ํ์ฉ/๋ถ๊ฐ)
3. ํน์ ์ฌ๋๋ค์ ์ด๋ํ ์ ์๊ณ ๋ชจ๋ ์ฌ๋์๊ฒ ๊ณต๊ฐํ ์๋ ์๋ค.
๊พธ๋ฏธ๋ ๊ฒ๋ ์๊ฐ ๋๋น ๋๋ฌด ์ด์๊ฒ ๋์์ ์์ฆ ์ฌ๋ฐ๊ฒ ๊พธ๋ฏธ๊ณ ์๋ค. ๋
ธ์
์ ์๊ฐ๋ณด๋ค ๋ค์ํ ๊ธฐ๋ฅ์ด ์์ด์ ์์ฆ์๋ ์ด๊ฒ์ ๊ฒ ์๋ํด๋ณด๊ณ ์๋ค. ์ ์ญ์ ์๊ณ ๋ฆฌ์ฆ๋นผ๊ณ ๋ค ์ฌ๋ฏธ์๋ ๊ฒ ๊ฐ๋ค.
์์ ์ฌ์ง์ ๋ด๊ฐ ์ง์ ๋ง๋ ์ด๋ฒ ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋์กฐ์ ๋ ธ์ ํ์ด์ง๋ค. ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์ ์ง์น ์ฐ๋ฆฌ ํ์๋ค์๊ฒ ์กฐ๊ธ์ด๋๋ง ํ์ด ๋ ์ ์๊ฒ? ๋ง๋ค์ด ์ฃผ๊ณ ์ถ์๋ค ๋ ธ์ ํ์ด์ง๋ฅผ ๋ค์ด์ฌ๋ ํ๋ฒ์ฉ ํผ์์ด๋ผ๋ ํ๊ฒ ํด์ฃผ๊ณ ์ถ์๋ค.
โต ํ์ ํด ํ์ฉํ๊ธฐ : ์ฌ๋
๋ชฉ์์ผ๋ถํฐ๋ Spring ๊ธฐ์ด์ฃผ์ฐจ ์คํฐ๋๋ฅผ ์์ํ์๋ค. ๋ค์ด๊ฐ์๋ง์ ์คํฐ๋ ํ์ฅ๋์ด '์นดํก๋ณด๋ค๋ ์ฌ๋์ ์ฌ์ฉํด๋ณด๋ ๊ฒ ์ด๋จ๊น์?'๋ผ๊ณ ์ ์ํ์ จ๋ค. ์ด์ ์คํฐ๋์กฐ๋ค์์๋ ์นดํก๋ฐฉ์ ํ์ ์ํตํ์๋ค. ํ์ง๋ง ์ด๋ฒ ํ์ฅ๋์ ์ฌ๋์ด ์์ฆ ๊ธฐ์ ๋ค์์ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐฉ์์ด๊ธฐ๋ ํ๊ณ ์นดํก ๋จํก๋ฐฉ๋ณด๋ค ํจ์ฌ ์ข๋ค๋ผ๊ณ ์ถ์ฒํ์ จ๋ค.
์ ํ ์๊ฐํด๋ณด์ง ์์ ๋ฐฉ๋ฒ์ด์ง๋ง ์ด๋ฒ ๊ธฐํ์ ์๋ก์ด ํด์ ๋ฐฐ์๋ณด๋ ๊ฒ๋ ๋์์ง ์์ ๊ฒ ๊ฐ์์ ์ข๋ค๊ณ ๋์ํ๋ค. ์ง๊ธ ๋ช์ผ์งธ ์ฌ์ฉํด๋ณธ ๊ฒฐ๊ณผ ์นดํก๋ณด๋ค ํจ์ฌ ์ข๊ณ ๋ค์ ํ์์๋ ์ ๊ทน์ ์ผ๋ก ์ฌ์ฉํด๋ณด๊ณ ์ถ์๋ค. ์ฌ๋์ ๋ํ ์ด์ผ๊ธฐ๋ ํฌ์คํ ์ ๋ฐ๋ก ์์ฑํ์์ผ๋ ํ์ธํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.
2021.06.30 - [๊ฐ๋ฐ TIP] - ๋ ์ค๋ฅด๋ ํ์ ์ฉ ๋ฉ์์ , ์ฌ๋ ์ฌ์ฉ๊ธฐ
โต ํ์ ํด ํ์ฉํ๊ธฐ : ํผ๊ทธ๋ง
์ด๊ฑด ๋์ ๊ฐ์ธ์ ์ธ ์ฑ๋ฆฐ์ง์๋ค. ํผ๊ทธ๋ง๋ ์ต๊ทผ ๊ฐ์ฅ ๋ ์ค๋ฅด๋ ์น๊ธฐ๋ฐ์ UI/UX ๋์์ธ ๋ฐ ํ๋กํ ํ์ดํ ํด์ด๋ค. ๋ณธ๊ฒฉ์ ์ธ ํํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ ์ ์ฝ๊ฐ์ด๋ผ๋ ๋ฐฐ์๋๋ค๋ฉด ๋์ค์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ ๋์์ด๋๋ค๊ณผ ์ํตํ๊ธฐ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋์ ๊ฒฝ์ฐ์๋ ํฌํ ์ต์ ์ด๋์ ๋ ๋ฐฐ์๋ฌ๊ธฐ ๋๋ฌธ์ ๋ช๋ฒ ๋ง์ง๋ค๋ณด๋ ๋ฐ๋ก ๊ฐ์ ์ก์ ์ ์์๋ค. ์ฌ์ฉํ๋ค๋ณด๋ ์๊ฒ๋ ์ ์ธ๋ฐ ๊ตฌ๊ธ ์คํ๋ ๋ ์ํธ์ฒ๋ผ ์ฌ๋ฌ์ฌ๋์ด ํจ๊ป ๊ณต๋์ผ๋ก ์์ ํ ์ ์์ด์ ๋์ค์ ํํ๋ก์ ํธ์์ ํ๋กํ ํ์ดํ ํ์ ํด๋ก ์ฌ์ฉํ๋ค๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ ํ๋ค.
โต ๋ค์ ์์ํ๋ Spring
ํญํด์ ๋ค์ด์ค๊ธฐ ์ ๋ถํฐ Spring์ ์ด๋ฏธ ์ด๋์ ๋ ๊ณต๋ถ๋ฅผ ํด์์๋ค. ๋น์์ Spring์ ๊ณต๋ถํ๊ณ ์ถ์์ง๋ง ์ด๋์๋ถํฐ ์์ํด์ผํ ์ง ๋ชฐ๋ผ์ ์ผ๋จ ์คํฐ๋์ ๋ค์ด๊ฐ๊ณ ํจ๊ป ์ฑ ์ ํตํด ๊ณต๋ถ๋ฅผ ์์ํ๋ค. ์ฑ ์ ํตํด ๊ณต๋ถํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ๊ทธ๋ด๋ฏํ ํํ๋ก์ ํธ(github ๋ฆฌํฌ์งํ ๋ฆฌ๋ก ์ด๋ | ํ๊ณ ํฌ์คํ ์ด๋)๋ฅผ ๋ง๋ค๊ธฐ๋ ํ๋ค. ํ์ง๋ง ๋ง๋ค๊ณ ๋์ ์๋ฌธ์ด ๋จ์๋ค.
์ด๊ฒ ์ง๊ธ ์ ๋๋ก ์ค๊ณํ ๊ฒ์ด ๋ง๋?
์ด๊ฒ ๋ฌด์จ ์ฝ๋๋๋ผ?
์๋ฌธ์ ํ๊ณ Spring์ ์ด๋ป๊ฒ ํ๋ฉด ์ ์ฌ์ฉํ ์ ์์์ง๋ฅผ ๋ค์ ๊ณต๋ถํ๋ค. ๊ทธ๋ฌ๋ ์ค ํญํด99 ๋ถํธ์บ ํ๋ฅผ ์์ํ๊ฒ ๋์๋ค. ์ด๋ฒ์ฃผ๋ถํฐ ๋ฃ๊ฒ๋ ํญํด99์ Spring ๊ฐ์๋ ์์งํ๊ฒ ๋งํ๋ฉด ๊ธฐ๋ ์ดํ์๋ค. ํ์ง๋ง ํจ๊ป ์ข์ ์ค๊ณ์ ๋ํด ๊ณ ๋ฏผํ ์ ์๋ ์ฌ๋๋ค์ด ๋ง์ ๊ฒ์ด ์ข์๋ค. ๋ชจ๋ฅด๋๊ฒ ์์ผ๋ฉด ์ง๋ฌธํ ํํฐ๋๋ ๊ณ์๊ณ ํจ๊ป ๊ณต๋ถํ๊ณ ๊ณ ๋ฏผํ๋ ํ์๋ค์ด ์์ด์ข์๋ค.
์์ ์ฌ์ง ์ ์ง๋ฌธ ์ธ์๋ ๊ทธ๋์ ์ ๋ง ๊ถ๊ธํด์๋ Service-ServiceImpl ๊ด๋ จ๋ ์ง๋ฌธ๊ณผ DTO ์ฌ์ฉ์ ๊ด๋ จ๋ ์ง๋ฌธ์ ํํฐ๋์๊ฒ ์ฌ์ญค๋ณด์์๋ค.
Q1) ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๋๋ผ๋ ๊ฐ์ ์์ฑ์ ๊ฐ์ง๊ณ ์๋ DTO๋ค์ ๋ํ์ฌ ์ฌํ์ฉํ๋ ๊ฒ์ ๋ํ์ฌ ์ด๋ป๊ฒ ์๊ฐํ์๋์ง ๊ถ๊ธํฉ๋๋ค. ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๋ค๊ณ DTO๋ฅผ ์๋ก ๋ ๋ง๋ค๊ฒ ๋๋ฉด DTO๊ฐ ์ ๋ง ๋ง์์งํ ๋ฐ ์ด ๋ฐฉ๋ฒ์ด ๋ง๋ ๋ฐฉ๋ฒ์ธ๊ฐ์?
A1) ๋ค๋ฅธ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์๋ค๋ฉด DTO๋ฅผ ์๋ก ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ํ์ฌ ์งํํ์๋ ํ๋ก์ ํธ์์ DTO๊ฐ ๋ง์ด ๋์จ๋ค๋ ๊ฒ์ ์ง๊ทนํ ์ ์์ ๋๋ค. ์ดํ์ ๋น์ทํ DTO๋ค ๋ผ๋ฆฌ ์์์ ๋ฐ์ ์๋ ์๊ณ ๋ฆฌํฉํ ๋ง ๊ณผ์ ์ ๊ฑฐ์น ์๋ ์์ต๋๋ค. ์ฐ์ ์ง๊ธ ๋จ๊ณ์์๋ ๋ค๋ฅธ ๋ชฉ์ ์ด๋ผ๋ฉด DTO๋ฅผ ์๋ก ๋ง๋์๋ ๋ฐฉ๋ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
Q2) Service - ServiceImpl๊ตฌ์กฐ์ ๋ํ ์ง๋ฌธ์ด ์์ต๋๋ค!
์ ๊ฐ ์ด์ ์ Spring์ ๋ฐฐ์ธ ๋์๋ Service-ServiceImpl๊ตฌ์กฐ๋ฅผ ๋ฐ๋์์ต๋๋ค. ๋น์ ์ ๋ ๊ณ์ธต ์ฌ์ด์ ๋ฎ์ ๊ฒฐํฉ๋๋ฅผ ์ํด ์ธํฐํ์ด์ค๋ฅผ ํตํด ๊ณ์ธต ์ฌ์ด ํธ์ถ์ด ์ด๋ค์ ธ์ผํ๋ค๊ณ ๋ฐฐ์ ์ต๋๋ค.
ํ์ง๋ง ํํฐ๋์ Spring ๊ธฐ์ด ๊ฐ์-2์ฃผ์ฐจ๋ฅผ ๋ณด๋ฉด ์ธํฐํ์ด์ค๋ฅผ ๊ฑฐ์น์ง์๊ณ Service๋ฅผ ์ฌ์ฉํ์๋๋ผ๊ตฌ์. ์ด์ ์๋ฌธ์ ๊ฐ์ง๊ณ ๊ด๋ จํ์ฌ ์ฐพ์๋ณด๋ ์ค์ ์์ฆ ํ์ ์์๋ Service-ServiceImpl ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ํฌ์คํ ์ ์ฝ๊ธฐ๋ ํ์์ต๋๋ค. Service - ServiceImpl๊ตฌ์กฐ์ ๋ํ ํํฐ๋์ ์๊ฐ๊ณผ ์ค์ ํ์ ์์๋ ์ด๋ค ์์ผ๋ก ์ฌ์ฉํ๋์ง ์ฌ์ญค๋ณด๊ณ ์ถ์ต๋๋ค!
A2) ์์๋ณด์ ๋ด์ฉ์ด ๋๋ถ๋ถ ๋ง์ต๋๋ค. Service-ServiceImpl๋ฅผ ์ฒ์ ์ฌ์ฉํ๊ฒ ๋ ์ด์ ๋ ๋ฎ์ ๊ฒฐํฉ๋ ๋๋ฌธ์ด์ง๋ง ๋๋ถ๋ถ 1:1๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ค์ด ์ด์ ํ์์ฑ์ ๋ํด ๊ณต๊ฐํ์ง ๋ชปํ๊ณ ์์ฆ์ ์ฌ์ฉํ์ง ์๋ ์ถ์ธ์ ๋๋ค. ํ์ง๋ง ๋ถ๋ช ํ Service-ServiceImpl ๊ตฌ์กฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ์๊ธฐ๋๋ฌธ์ ํ์์์๋ Service-ServiceImpl๋ก ์์ ํ์ด ์ฌ์ฉํฉ๋๋ค.
Q3) DB ์ ๋ณตํฉํค์ ๋ํด JPA ์์ ID ์ค์ ์ ์ด๋ป๊ฒ ํ๋์?
A3) @Id ๋์ @EmbededId ํน์ @IdClass ์ฌ์ฉ (https://techblog.woowahan.com/2595/)
Q3-2) ์ด์ ๊ด๋ จ๋ ์ง๋ฌธ์ ํ๋ ๋ ์์ต๋๋ค!!
ํน์ JPA์์๋ PK(๊ธฐ๋ณธํค)๋ฅผ auto increment๋๋ ์ปฌ๋ผ์ผ๋ก๋ง ์ฃผ๋ก ์ฌ์ฉํ๋์?
์ ๊ฐ ์์ ์๋ Spring-MyBatis๋ฅผ ์ฌ์ฉํ๊ณ ์์๊ธฐ ๋๋ฌธ์ DB ํ
์ด๋ธ์ ์ง์ ์์ฑํ์์์ต๋๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ํ์ํ๋ค ์๊ฐํ๋ฉด ๋ณตํฉํค๋ฅผ ๋ง๋ค๊ธฐ๋ ํ์๊ตฌ์. ๋ ๊ทธ๋ ์ ๋ User๋ผ๋ ํ
์ด๋ธ์ ๋ง๋ค๋ ์์ด๋(username)๋ Userํ
์ด๋ธ์์ ์ ์ผํ ๊ฐ์ด๋, ์ด ๊ฐ์ PK๋ก ์ง์ ํ์์ต๋๋ค. ํ์ง๋ง ํํฐ๋ 2์ฃผ์ฐจ ๊ฐ์์๋ณด๋ ๋ฐ๋ก auto increment๋๋ ์ปฌ๋ผ(id)๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ์ฃผ์
จ๋๋ผ๊ตฌ์.
์ฌ์ค ์ ๊ฐ DB๋ฅผ ๋ฐฐ์ธ๋๋ ์ด๋ฐ ์ธ์กฐ์๋ณ์๋ ๋ ์ ์์ผ๋ฉด ๋ง๋ค์ง ๋ง๋ผ๊ณ ๋ฐฐ์ฐ๊ธฐ๋ ํ๊ณ ์ ์ญ์๋ ๋ณ๋ก ํ์์๋ ์ปฌ๋ผ์ ๊ตณ์ด ๋ง๋ค์ด์ผํ๋?๋ผ๋ ์๊ฐ์ด ์์ต๋๋ค.
ํน์ ์ ๊ฐ ๋์น๊ณ ์๋ ๋ถ๋ถ์ด ์์๊น์? ์๋๋ฉด JPA์ ํน์ง์..?๊ทธ๋ฐ๊ฑด๊ฐ์?
A3-2) id ๋ฅผ ๊ธฐ๋ณธํค๋ก ํ์ ๋์ ์ฅ์ ์ด ์๋๋ฐ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ฅ์ ์ด ๋๋ ๊ฑด ์๋ ๊ฑฐ ๊ฐ์ง๋ง, ์ ๊ฐ ์๋ ๋ฒ์ ๋ด์์ ๋ง์ ๋๋ฆด๊ป์.
1. id ๋ฅผ PK ๋ก ํ๋ฉด PK ์ ๋ํ ํต์ผ์ฑ์ด ์๊ธด๋ค. ์ฆ, ์ด๋ค ํ
์ด๋ธ์์๋ PK ๋ ์ฆ๊ฐํ๋ ๋ฒ์๋ผ๊ณ ํ์
ํ ์ ์์ต๋๋ค.
2. id ์์ผ๋ก ์ ๋ ฌํ ๋ ์ฑ๋ฅ์ ๋์์ด ๋๋ค. id ์ ๋ ฌ ์์ด ๊ฒฐ๊ตญ data ์ ์์ฑ ์์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
a.๊ฒ์ํ ๊ธ๋ก ์๋ฅผ ๋ค์ด๋ณด๋ฉด.. ๊ฒ์ํ ๊ธ์ด ์์ฑ๋๋ ์์๋ก id ๊ฐ ๋ง๋ค์ด์งํ
๋ฐ์. DB ๋ฐ์ดํฐ๋ ๊ฒฐ๊ตญ HDD (ํ๋ ๋์คํฌ) ์ ์ ์ฅ๋๋๋ฐ, id ์์ผ๋ก ์ ์ฅ๋๋ค๋ฉด ๋์ค์ ๊ฒ์ํ์์ ์ต์ ์์ผ๋ก ๊ธ์ ์ฝ์ด์ฌ ๋ ์ฑ๋ฅ ์ ๋์์ด ๋ฉ๋๋ค. ์๋๋ฉด HDD ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ฌ ๋ ๋ฐ์ดํฐ๊ฐ ๊ทผ์ฒ์ ์๋๊ฒ ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์ธ๋ฐ์. ์์ธํ ๋ถ๋ถ์ ๋ชจ๋ฅด์
๋ ๋ ๊บผ ๊ฐ๊ณ , ์ํผ ์ฌ๊ธฐ๊น์ง๊ฐ ์ ๊ฐ ์๊ณ ์๋ ๋ฒ์์
๋๋ค.
'ํญํด99' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ ํ๋ก์ ํธ2] ActionPlan์ ์ฐ๊ด ๊ด๊ณ ์ด์ ์ด ์ ๋ฆฌ (1) | 2021.07.15 |
---|---|
[๊ฐ์ธ ํ๋ก์ ํธ1] My DevBoard ํ๋ก์ ํธ ํ๊ณ (0) | 2021.07.01 |
[WIL 2] ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋ ์งํ๊ณผ ์ฃผํน๊ธฐ ์ ํ (0) | 2021.06.20 |
[WIL 1] ํํ๋ก์ ํธ์ ์๊ณ ๋ฆฌ์ฆ์ ์์ (0) | 2021.06.13 |
[ํ ํ๋ก์ ํธ1] MyTube ํ ํ๋ก์ ํธ ํ๊ณ (0) | 2021.06.11 |