๋ชฉ๋ก๐ฅ BE ๋ฐฑ์๋ (118)
Bibi's DevLog ๐ค๐
ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ ํ์๊ฐ์ ํ์ด์ง์์ ํ์๊ฐ์ ์ ํ๋ฉด, ์ฌ์ฉ์์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๋ฐ์ ์ถ๋ ฅํ๋ค. ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค. ์์ฑ action : ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ค URL๋ก ๋ณด๋ผ์ง๋ฅผ ์ง์ ํ ์ ์์. : ํด๋น form์ผ๋ก๋ถํฐ /create๋ก ์๋ฒ์ ์์ฒญ์ ๋ณด๋ URL์ด ์ถ๊ฐ๋๋ฉด ํญ์ ์์ํ๋ Controller ๋ฐ ๋ฉ์๋๊ฐ ์์ด์ผ ํ๋ค. formํ๊ทธ์ ์๋ฌด ์์ฑ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก GET๋ฐฉ์์ผ๋ก ํต์ ํ๋ค. index.mustache ์์ด๋ ๋น๋ฐ๋ฒํธ ์ด๋ฆ ์ด๋ฉ์ผ ์ ์ถ ์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์๊ณ ์ ์ถํ์ ๋์ URL : http://localhost:8080/create?userid=&password=&username=&useremail= UserController...
mustache ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ ๋ฆฌํ๊ธฐ ๋ณต์กํ์ง ์์ผ๋ฏ๋ก ๊ณต๋ถ ๋ฐ ์ฐ์ตํด ๋ณธ๋ค! ๊ณต์ํ์ด์ง..๋ฅผ ๋ฒ์ญํ ๋ธ๋ก๊ทธ๋ฅผ ๋ณด๊ณ ๊ณต๋ถํ์ต๋๋ค. 1. ๋ณ์ {{, }} ์ฌ์ด์ ๋ณ์๋ช ์ ์ ๋ ฅํ๋ค. ๋ฌธ์์ด์ ์๋ HTML ์ด์ค์ผ์ดํ ๋๋ค. ์ด์ค์ผ์ดํ Escape๋? ํน์ ๋ฌธ์๋ฅผ HTML๋ก ๋ณํํ๋ ํ์. (์ ๋ก์ด ์ฐธ๊ณ ) ์ด์ค์ผ์ดํ๋์ง ์์ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ ค๋ฉด {{{, }}}์ ์ฌ์ฉํ๋ค. ๋ฐ์ดํฐ { "name" : "Chris", "company" : "Github" }ํ ํ๋ฆฟ {{name}} {{age}} {{company}} {{{company}}}๊ฒฐ๊ณผ Chris Github Github1-1. ๋ณต์กํ ๊ฐ์ฒด : ๊ฐ์ฒด ์์ ๊ฐ์ฒด๊ฐ ํฌํจ๋์ด ์์ ๋๋ ์ ๋ฌธ๋ฒ(dot-syntax)์ ์ฌ์ฉํ๋ค. ๋ฐ์ดํฐ { "name..
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 ์์๋ก ๊ตฌ์ฑ๋๋ค. ์ปจํธ..