๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (454)
Bibi's DevLog ๐ค๐
์ด ๊ธ์ ์ธํ๋ฐ ๊น์ํ ๋์ ์คํ๋ง ์ ๋ฌธ ๊ฐ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. (์ด์ด์) ์คํ๋ง 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/ ์์ ์คํ๋ง ํ๋ก์ ํธ๋ฅผ..
๋ฐ๋๋ฝ DeadLock ๋ฐ๋๋ฝ (๊ต์ฐฉ ์ํ) ์ด๋? : ํ๋ก์ธ์ค๊ฐ ์์์ ์ป์ง ๋ชปํด ๋ค์ ์ฒ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ๋ ์ํ. ๋ ๊ฐ ์ด์์ ์์ ์ด ์๋ก ์๋๋ฐฉ์ ์์ ์ด ๋๋๊ธฐ๋ง์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ด ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ฌด๊ฒ๋ ์๋ฃ๋์ง ๋ชปํ๋ ์ํ๋ฅผ ๋งํจ. ๋ฐ๋๋ฝ ๋ฐ์ ์ํฉ ๋ฉํฐ ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์์, ์์คํ ์ ์ผ๋ก ํ์ ๋ ์์์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ค. ์ด๋ค ํ๋ก์ธ์ค๊ฐ ์์์ ์์ฒญํ์ ๋, ๊ทธ ์๊ฐ์ ๊ทธ ์์์ ์ฌ์ฉํ ์ ์๋ ์ํฉ์ด ๋ฐ์ ์ด๋ฐ ๊ฒฝ์ฐ ํด๋น ํ๋ก์ธ์ค๋ ๋๊ธฐ ์ํ๊ฐ ๋จ ๋๊ธฐ ์ํ์ ํ๋ก์ธ์ค๋ค์ด ์คํ ์ํ๋ก ๋ณ๊ฒฝ๋ ์ ์์ ๋๋ฅผ ๊ต์ฐฉ ์ํ๋ผ๊ณ ํ๋ค. ๋ฐ๋๋ฝ ๋ฐ์ ์กฐ๊ฑด ๊ต์ฐฉ์ํ๊ฐ ์ผ์ด๋๋ ค๋ฉด ๋ค์์ ๋ค ํ์ ์กฐ๊ฑด์ ์ถฉ์กฑ์์ผ์ผ ํ๋ค. ์ฆ, ์๋ ์กฐ๊ฑด ์ค ํ๋๋ผ๋ ๋ง์กฑํ์ง ์์ผ๋ฉด ๊ต์ฐฉ ์ํ๋ ๋ฐ์ํ์ง ์๋๋ค...