ํ์์์ ๊ทธ๋ฃน์คํฐ๋๋ฅผ ๋ณํํ๋ฉฐ ํ์ต์ค์ด๋ค. ๋๋ ํ๋ก์ ํธ ๊ฒฝํ์ด ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ๊ทธ ์ค๋ ฅ์ ๋๋ฆฌ๊ณ ์ ์ฌ์ด๋ํ๋ก์ ํธ์ ์ง์ํด์ ํ์ด ๊ตฌ์ฑ๋์๋ค.!! ์ด์ด ์ข๊ฒ๋,, ํ์ฅ๋์ด๋ ํ์๋ค ๋๋ฌด ์๋ง๋์ ๋๋ง์กฑ,,
๋๋ง ์ํ๋ฉด ๋๋ค..^^ ๋ฏผํ๋ผ์น์ง ๋ง์,, ~
> ์ ๋ฒ์ฃผ๊น์ง๋ Spring์ ์ฃผ์ ๋ฅผ ๋งก์ ํ์ตํด์ค๊ณ ํ์๋ค์๊ฒ ์ค๋ช
ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์งํํ๋ค๋ฉด
์ด๋ฒ์ฃผ๋ถํฐ๋ ๋ฌด์์ ๊ฒ์ํ ํ๋ ๋ง๋ค์ด๋ณด๊ธฐ ! Spring Boot๋ก ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ JPA๋ฐฉ์์ผ๋ก CRUD๊ฒ์ํ์ ๋ง๋ค์ด ๋ณด๊ธฐ๋ก ํ๋ค.
๋ง๋ก๋ ์์ฒญ ์ฌ์ด ๊ฒ ๊ฐ์๋๋ฐ ๋ง์ ํด๋ณด๋ ๋๋ฌด ์ด๋ ค์ ๋ค.. ใ
ใ
์ด๋ก ์ผ๋ก๋ MVCํจํด ์ง๋ฆฌ๋๋ก ๋ค์๊ณ ์์๋ค๊ณ ์๊ฐํ๋๋ฐ ๋ง์ ์ฝ๋๋ฅผ ์ฐ๋ ค๊ณ ํ๋ค๋ณด๋ ๋ญ์ง ํ๋๋ ๋ชจ๋ฅด๊ฒ ์ด์ OMG,,.. ๋ด ์ค๋ ฅ์ด ์ผ๋ง๋ ๋ณ๋ก์ธ์ง ๋ค์ ํ ๋ฒ ๋๋ผ๊ฒ ๋์๋ค.. ๋
ธ๋ ฅํ์
๋จผ์ ๋ด๊ฐ ํท๊ฐ๋ฆฌ๊ณ ์ด๋ ค์ํ๋ ์ด๋ก ? ํจํด ๋ถ๋ถ๋ถํฐ ์ง๊ณ ๋์ด๊ฐ๋ณด์.
Model, View, Controller์ ์ฝ์์ด๋ค.
์ฃผ๋ก ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌ ํ ํ ์ง์ ๋ ๋ทฐ์ ๋ชจ๋ธ ๊ฐ์ฒด๋ฅผ ๋๊ฒจ์ฃผ๋ ์ญํ
โ ์ฌ์ฉ์์ ์์ฒญ์ด ์ง์ ํ๋ ์ง์ ์ผ๋ก ์์ฒญ์ ๋ฐ๋ผ ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ ์ง ๊ฒฐ์ ์ Service์ ๋๊ฒจ์ค๋ค. ๊ทธ ํ Service์์ ์ค์ง์ ์ผ๋ก ์ฒ๋ฆฌํ ๋ด์ฉ์ View์๊ฒ ๋๊ฒจ์ค๋ค.
์ Service๋ฅผ ์ดํดํ๊ธฐ ์ํด ํฐ ํ์ ๋ณด์๋ฉด
Service๊ฐ ์๋ง์ ์ ๋ณด๋ฅผ ๊ฐ๊ณตํ๋ ๊ณผ์ ์ '๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ค.' ๋ผ๊ณ ํ๋ค.
Service๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ DAO๋ฅผ ์ด์ฉํด์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ ์จ๋ค.
JpaRepository๋ฅผ ์์๋ฐ๋๋ก ํจ์ผ๋ก์จ ๊ธฐ๋ณธ์ ์ธ ๋์์ด ๋ชจ๋ ๊ฐ๋ฅํด์ง๋ค! JpaRepository๋ ์ด๋ค ์ํฐํฐ๋ฅผ ๋ฉ์๋์ ๋์์ผ๋ก ํ ์ง๋ฅผ ๋ค์ ํค์๋๋ก ์ง์ ํ๋ค.
@Entityย : ํด๋์ค ์์ ์ ์ธํ์ฌ ์ด ํด๋์ค๊ฐ ์ํฐํฐ์์ ์๋ ค์ค๋ค. ์ด๋ ๊ฒ ๋๋ฉด JPA์์ ์ ์๋ ํ๋๋ค์ ๋ฐํ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ง๋ค์ด์ค๋ค.
@Builderย : ํด๋น ํด๋์ค์ ํด๋นํ๋ ์ํฐํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ๋น๋ ํจํด์ ์ด์ฉํด์ ๋ง๋ค ์ ์๋๋ก ์ง์ ํด์ฃผ๋ ์ด๋ ธํ ์ด์ ์ด๋ค. ์ด๋ ๊ฒ ์ ์ธํด๋์ผ๋ฉด ๋์ค์ ๋ค๋ฅธ ๊ณณ์์ Board.builder(). {์ฌ๋ฌ๊ฐ์ง ํ๋์ ์ด๊ธฐ๊ฐ ์ ์ธ }. build() ํํ๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค.
@AllArgsConstructorย : ์ ์ธ๋ ๋ชจ๋ ํ๋๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๊ฐ๋ ์์ฑ์๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ค๋ค.
@NoArgsConstructorย : ํ๋ผ๋ฏธํฐ๊ฐ ์์์๋ ๊ธฐ๋ณธ์์ฑ์๋ฅผ ์๋์ผ๋ก ๋ง๋ค์ด์ค๋ค.
@Getterย : ๊ฐ ํ๋๊ฐ์ ์กฐํํ ์ ์๋ getter๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋ค. ์๋ฅผ๋ค์ด ๋ค๋ฅธ ํ์ผ์์ Board ๊ฐ์ฒด์ title๊ฐ์ ์ป๊ณ ์ถ๋ค๋ฉด getTitle() ๋ฉ์๋๋ฅผ ์ ์ํด์ ํด๋น ๊ฐ์ฒด์ title๊ฐ์ ์ป์ด์ค๊ฒ ๋๋๋ฐ, ํด๋น ๋ฉ์๋๋ฅผ ๊ตณ์ด ์์ฑํ์ง ์์๋ ์๋์ผ๋ก ์์ฑํด์ฃผ๋ ๊ฒ์ด๋ค.๋ณ์๋ ๋ณดํต ์ง์ ์ ๊ทผ ๋ฐ ๋ณ๊ฒฝ์ด ์๋๋๋ก private ์ ์ธ์๋ฅผ ํตํด ์ง์ ํ๋ค. title ์ด๋ผ๋ ๋ณ์๋ฅผ ์กฐํํ๊ธฐ ์ํด์ getTitle() ์ด๋ผ๋ ๋ฉ์๋๋ฅผ ์ ์ธํ๊ณ , title์ ๋ฆฌํดํ๋๋ก ํด์ค๋ค. ์ด ๋ฉ์๋๋ฅผย getter๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฌ์ค ์ง๊ธ๋ 100% ์ดํด๊ฐ ๊ฐ๋ ๊ฑด ์๋์ง๋ง ์ฒ์์ ๋นํ๋ฉด ๋ง์ด ๋์์ก๋ค.
์ ๋ฆฌํ์๋ฉด, Controller์์ ์ฌ์ฉ์์ ์์ฒญ์ ๋ฐ์ผ๋ฉด ex)GET๋ฐฉ์ ๋ฑ์ผ๋ก ์์ฒญ
Service์ ์๋ ๋ฉ์๋๋ก DTO์ ์๋ ๋ฐ์ดํฐํ์์ ๋งค๊ฐ๋ณ์๋ก ๋ณด๋ด์ค๋ค
๊ธฐ๋ณธ์ผ๋ก ์ ์๋์ด์๋ Jap Repositpoy์์๋ฐ์ ๊ธฐ๋ณธ์ ์ธ ๋์์ธ Save, find๋ฑ์ ํ ์ ์๋ค
๋๋ฉ์ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํฐํฐ๋ฅผ ์ ์ํด ๊ฐ์ฒด๋ฐฉ์์ผ๋ก ๊บผ๋ด์ธ ์ ์๋ค
๋จธ๋ฆฌ๋ก๋ ๋์ถฉ ์ดํดํ๋๋ฐ ๊ธ๋ก ์ฐ๋ ค๋ ์ด๋ ต๋ค. ๋ค์ ํฌ์คํ
์์๋ ๋ณด๋ค ๋ ์์ธํ๊ฒ ์จ๋ณด๊ฒ ๋ค !
๋๋ฌด๋๋ฌด๋๋ฌด ์ด๋ ต๋ค ํํ