๋ชฉ๋ก๐ฅ BE ๋ฐฑ์๋/Spring ์คํ๋ง (32)
Bibi's DevLog ๐ค๐
mustache๋ฅผ ํ์ฉํ ๋์ ์ธ HTML๊ณผ MVC ์ค๋ช ์ปจํธ๋กค๋ฌ์์ mustache๋ผ๋ ํ ํ๋ฆฟ์์ง์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํด, ๋์ ์ธ HTML์ ๋ง๋ค์ด๋ด๋ ๋ฒ์ ๋ฐฐ์ด๋ค. MVC์ ๊ฐ๋ MVC๋ ํ ๊ณณ์์ ๋ง์ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋์ , ๊ฐ ์ฝ๋์ ์ญํ ์ ๋ถ๋ดํ๊ธฐ ์ํด ๋ฑ์ฅํ๋ค. Controller : ์ต์ด ์ง์ ์ง์ . ์ฌ์ฉ์์ ์ ๋ ฅ ๊ฐ์ด ์ ํจํ ์ง๋ฅผ ๊ฒ์ฆํ๊ณ , ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ Model์ ์ ๋ฌํ๊ณ , Model์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ด๋ํ View๋ฅผ ๊ฒฐ์ ํ๋ ์ญํ Model : ์ค์ง์ ์ธ ๋น์ฆ๋์ค ๋ก์ง์ ๊ตฌํํ๋ ์ญํ ์ ๋ด๋นํจ. ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ DB์ ์ ์ฅํ๊ณ ์กฐํํ๋ ์ญํ . ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ง์ด๋ผ ํ ์ ์์. View : Controller์ ์ํด ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋จ์ํ ์ถ๋ ฅํ๋ ์ญํ ํ ํ๋ฆฟ ์์ง์ด..
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. (์ด์ด์) ์คํ๋ง DB ์ ๊ทผ ๊ธฐ์ ... ์์ JDBC ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ DB๋ฅผ ์ฐ๊ฒฐํด ์ ์ฅํ๋ ๋ฒ์ ๋ฐฐ์๋ณผ ๊ฒ์ด๋ค. ์ฟผ๋ฆฌ๋ฌธ์ ์ด์ฉํด DB์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋นผ๋ ๋ฐฉ๋ฒ ๊ทธ ์ค์์๋ 20๋ ์ ๋ฐฉ์์ธ ์์ JDBC API๋ง์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ๋จผ์ ๋ณด๊ณ , ์ ์ฐจ ๋ฐ์ ๋๋ ๊ธฐ์ ๋ค์ ๋ฐฐ์ธ ๊ฒ์ด๋ค. ์๋ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก DB์ ์ฐ๊ฒฐํ๋ ค๋ฉด JDBC๋ผ๋ ๋๋ผ์ด๋ฒ๊ฐ ๊ผญ ์์ด์ผ ํ๋ค. 1 build.gradle ์๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค. dependencies { // codes ... implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2da..
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์คํ๋ง DB ์ ๊ทผ ๊ธฐ์ ์คํ๋ง์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฒ์ ์์๋ณผ ๊ฒ์ด๋ค. DB : ๋ฐ์ดํฐ๋ฒ ์ด์ค JDBC : DB์ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฐ๊ฒฐํด์ฃผ๋ ๊ธฐ์ . ์ฐ์ ์ ์์ํ JDBC๋ฅผ ์ฌ์ฉํ๋ ๋ฒ์ ๋ฐฐ์๋ณธ๋ค. JDBC ํ ํ๋ฆฟ : ์์ํ JDBC์ ์ฌ์ฉ์ด ์ด๋ ค์์ ๋์จ ์คํ๋ง ๊ธฐ์ . ์ ํ๋ฆฌ์ผ์ด์ ์์ DB๋ก SQL๋ฌธ์ ํธํ๊ฒ ๋ณด๋ผ ์ ์๋ค. JPA : SQL๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ๊ฐ์ฒด๋ฅผ ์ง์ DB์ ์ ์ฅ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ ๊ธฐ์ . ์คํ๋ง ๋ฐ์ดํฐ JPA : JPA๋ฅผ ๋ ํธ๋ฆฌํ๊ฒ ์ธ ์ ์๋๋ก ๋ง๋ ์คํ๋ง์ ๊ธฐ์ . ์ด์ ์ง๊ธ๊น์ง ๋ง๋ค์๋ MemoryMemberRepository๋ฅผ JDBCRepository, JPARepos..
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ํ์ ๊ด๋ฆฌ ์์ - ์น MVC ๊ฐ๋ฐ ํ์ ์น ๊ธฐ๋ฅ - ํ ํ๋ฉด ์ถ๊ฐ ์์ฃผ ๋จ์ํ 1.ํ์ ๋ฑ๋ก ๋ฐ 2.ํ์ ์กฐํ ๊ธฐ๋ฅ์ ํ๋ ํ๋ฉด์ ๋ง๋ค์ด ๋ณธ๋ค. @GetMapping("/") : URL์์ /๋ ๋๋ฉ์ธ์ผ๋ก ์ฒ์ ๋ค์ด์์ ๋์ ํ์ด์ง๋ฅผ ๋งํจ. (ํ ํ์ด์ง) index.html๊ณผ์ ์ฐจ์ด๋?? (src/main/java/resources/static/index.html) (๋ณต์ต) ์น ๋ธ๋ผ์ฐ์ ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ํฐ์บฃ ์๋ฒ๋ ์คํ๋ง ์ปจํ ์ด๋์์ ๊ด๋ จ ์ปจํธ๋กค๋ฌ๋ฅผ ๋จผ์ ์ฐพ๊ณ , ๊ด๋ จ ์ปจํธ๋กค๋ฌ๊ฐ ์์ผ๋ฉด ๊ทธ ๋ staticํด๋๋ฅผ ์ฐพ๋๋ค. ๊ทธ๋์ static์ ์๋ index.html๋ณด๋ค @GetMapping("/")์ด ๋จผ์ ์ฐพ์์ง๋ค. @GetM..
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ์คํ๋ง ๋น๊ณผ ์์กด๊ด๊ณ ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์๋ ์์กด๊ด๊ณ ์ค์ , DI ๋ง๋ ์๋น์ค๋ฅผ ํ๋ฉด์ ๋ถ์ด๊ธฐ ์ํด ์ปจํธ๋กค๋ฌ์ Viewํ ํ๋ฆฟ์ด ํ์ํ๋ค. ์๋ฅผ ๋ค์ด ํ์๊ฐ์ ์ ํ๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HTML๋ก ํ๋ฉด์ ๋ฟ๋ ค์ฃผ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ๊ฒ. ๋จผ์ Member์ Controller๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค. ์์กด๊ด๊ณ Controller๋ Service๋ฅผ ํตํด ํ์๊ฐ์ ์ ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์์ด์ผ. ์ด๋ฅผ '์ปจํธ๋กค๋ฌ๊ฐ ์๋น์ค์ ์์กดํ๊ณ ์๋ค'๊ณ ํํํ๋ฉฐ, '์์กด๊ด๊ณ๊ฐ ์๋ค'๊ณ ํ ์ ์๋ค. ํ์ ์ปจํธ๋กค๋ฌ๊ฐ ํ์ ์๋น์ค์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ์์กด๊ด๊ณ๋ฅผ ๋ง๋ค์. ์คํ๋ง ์ปจํ ์ด๋์ ์คํ๋ง ๋น @Controller ์ด๋ ธํ ์ด์ ์ผ๋ก ์ปจ..
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ํ์ ๊ด๋ฆฌ ์์ - ๋ฐฑ์๋ ๊ฐ๋ฐ ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ์ ๋ฆฌ ํ์ ๋๋ฉ์ธ๊ณผ ์ ์ฅ์(๋ฆฌํฌ์งํ ๋ฆฌ) ๋ง๋ค๊ธฐ ํ์ ๋ฆฌํฌ์งํ ๋ฆฌ ํ ์คํธ์ผ์ด์ค ์์ฑ ํ์ ์๋น์ค ๊ฐ๋ฐ ํ์ ์๋น์ค ํ ์คํธ *ํ์ ์ ์ฅ์(๋ฆฌํฌ์งํ ๋ฆฌ) : ํ์ ๋๋ฉ์ธ ๊ฐ์ฒด๋ฅผ ์ ์ฅ ๋ฐ ๋ถ๋ฌ์ฌ ์ ์๋ ๊ฐ์ฒด. ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ ์ ๋ฆฌ ์์์ด๋ฏ๋ก ๊ฐ์ฅ ์ฌ์ด ๊ฒ์ผ๋ก ๋ง๋ ๋ค. ๋จ์ํ ์๋น์ค๋ก ์คํ๋ง ์ํ๊ณ๊ฐ ์ด๋ป๊ฒ ๊ฐ๋ฐ, ๋์๋๋์ง ์ดํดํ๋ ๊ฒ ๋ชฉํ๋ค. ๋ฐ์ดํฐ : ํ์ ์์ด๋, ์ด๋ฆ ๊ธฐ๋ฅ : ํ์ ๋ฑ๋ก, ์กฐํ (๊ฐ์์ ์๋๋ฆฌ์ค) ์์ง ๋ฐ์ดํฐ ์ ์ฅ์๊ฐ ์ ์ ๋์ง ์์ ์ผ๋ฐ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต ๊ตฌ์กฐ ์ผ๋ฐ์ ์ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํธ๋กค๋ฌ, ์๋น์ค, ๋ฆฌํฌ์งํ ๋ฆฌ, ๋๋ฉ์ธ, DB ์ 5 ์์๋ก ๊ตฌ์ฑ๋๋ค. ์ปจํธ..
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. (์ด์ด์) ๋น๋ํ๊ณ ์คํํ๊ธฐ ๋ง๋ ํ์ผ์ ์ธํ ๋ฆฌJํ๊ฒฝ์ด ์๋ cmd ํ๊ฒฝ์์ ์คํํด ๋ณธ๋ค. ์๋ฒ์์ ๋น๋ํ๋ ๋ฐฉ๋ฒ์ ํด๋นํ๋ค (cmd๋ง ์ฌ์ฉ ๊ฐ๋ฅ) - ์ค๋ฌด์์ ๊ฐ๋ฐํ ๋๋ cmd๋ง์ผ๋ก ๋น๋๋ฅผ ํด์ผ ํ ๋๋ ๋ง๋ค. (์๋์ฐ ๊ธฐ์ค) ๋ช ๋ น ํ๋กฌํํธ๋ฅผ ์ด๊ณ cd ๋๋ ํ ๋ฆฌ๋ช ์ ํตํด ์คํ๋ง ํ์ผ์ด ์๋ ์์น๋ก ์ด๋ํ๋ค. cd ๋๋ ํ ๋ฆฌ๋ช : ํด๋น ๋๋ ํ ๋ฆฌ๋ก ์ด๋ dir : =ls. ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ๋ณด์ฌ ์ค dir๋ก ํ์ธํ์ ๋ gradlewํ์ผ์ด ๋ณด์ด๋ฉด, gradlew build ๋ช ๋ น์ด๋ก ๊ทธ๋๋ค์ ์คํํ๋ค. ์ ์ ๊ธฐ๋ค๋ฆฌ๋ฉด ํ์ํ ํ์ผ๋ค์ ์ค์นํ๊ณ ๋น๋๊ฐ ์๋ฃ๋๋ค. BUILD SUCCESSFUL ์ด ๋์ค๋ฉด ๋น๋๊ฐ ์ ๋ ๊ฒ. ๋น๋๊ฐ ์ ..
์ธํ๋ฐ - ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์(๋ฌด๋ฃ) ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์์๊ฐ ๊ฐ๋จํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํด ๋ณด๋ ๊ฐ์ข์ด๋ค. ์คํ๋ง ํ๋ก์ ํธ ์์ฑ ์คํ๋ง ๋ถํธ๋ก ์น์๋ฒ ์คํ ํ์ ๋๋ฉ์ธ ๊ฐ๋ฐ ์น MVC ๊ฐ๋ฐ DB์ฐ๋ - JDBC, JPA, ์คํ๋ง๋ฐ์ดํฐ JPA ํ ์คํธ ์ผ์ด์ค ์์ฑ ํฌ์ธํธ ์คํ๋ง ๊ธฐ์ ๊ทธ ์์ฒด์ ๋งค๋ชฐ๋๊ธฐ๋ณด๋ค ์ด๋ป๊ฒ ์ฌ์ฉํด์ผ ํ๋์ง์ ์ด์ ์ ๋ง์ถ๋ค. ์ค๋ฌด์์ ๊ฑฐ์ ์ฐ์ง ์๋ ์ค๋๋, ๋ง์ด๋ํ ์คํ๋ง ๊ธฐ์ ์ ์ ์ธํ๋ค. ์คํ๋ง์ ๋งค์ฐ ๊ฑฐ๋ํ๊ณ ๊น์ด์๋ ๊ธฐ์ ์ด๊ธฐ ๋๋ฌธ์, ํ์ํ ๊ฒ ๋ถํฐ ๋ฐฐ์ด๋ค. ํ๋ก์ ํธ ์์ฑ java 11 IntelliJ ๋๋ Eclipse ์ค์น ์คํ๋ง ํ๋ก์ ํธ ์์ฑ https://start.spring.io/ ์์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ..