๋ชฉ๋ก๐ฅ BE ๋ฐฑ์๋/Spring ์คํ๋ง (32)
Bibi's DevLog ๐ค๐
@Embeded ์ฐ๊ด ์๋ ์ปฌ๋ผ๋ค์ ๋ฌถ๋ ํ ์ด๋ธ์ ์๋ก ๋ง๋ค์ง ์๊ณ , @Embeded๋ฅผ ์ฌ์ฉํด ๋ง์น ํ๋์ ํ ์ด๋ธ์ ๋ง๋ ๊ฒ์ฒ๋ผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด๋ค!! [JPA] @Embeded, ์๋ฒ ๋๋ ํ์ https://velog.io/@conatuseus/JPA-%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-%ED%83%80%EC%9E%85embedded-type-8ak3ygq8wo ์ ์ ์ค๋ช ๋์ด ์์ด ์์ฝ ์ ๋ฆฌ๋ง ํ์ต๋๋ค.๐โ๏ธ JPA์์ ์๋ฒ ๋๋ ํ์ (๋ณตํฉ ๊ฐ ํ์ )์ด๋ ์๋ก์ด ๊ฐ ํ์ ์ ์ง์ ์ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์๋ฒ ๋๋ ํ์ ์ญ์ int, String์ฒ๋ผ ๊ฐ ํ์ ์ด๋ค. โ ์๋ฒ ๋๋ ํ์ ์ ์ฐ๋ ์ด์ โ ์์ธํ ๋ฐ์ดํฐ๋ค์ ๊ด๋ จ ์๋ ํ์ ์ผ๋ก ๋ฌถ์ด ๊ฐ์ฒด์งํฅ์ ์ด๊ณ ์์ง๋ ฅ ๋๊ฒ ๋ง๋ค๊ธฐ ์..
PUT method POST๋ก๋ ํ์์ ๋ณด ์์ ์ ๊ฐ๋ฅํ์ง๋ง, PUT ์ ์ฌ์ฉํด ์์ฒญ์ ๋ช ํํ ํ๋ ๊ฒ์ด RestAPI๊ด์ ์์ ๋ ๋ฐ๋์งํ๋ค. POST ๋์ PUT method๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์์ ํ๋ฉด(updateForm.html)์์ ์์ ๋ ๊ฐ์ ์ ์กํ ๋ PUT๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด hidden์ผ๋ก ์ ์กํ๋ค. ์ form ์ฌ๋ ํ๊ทธ ์๋์ ๋ฃ๋๋ค. โ ์ method๋ฅผ put์ผ๋ก ๋ฐ๊พธ์ด์๋ ์ ๋๋ค! form์ get/post๋ง ์ง์ํ๊ธฐ ๋๋ฌธ. updateForm.html // ... ์์ ๊ฐ์ด _method๋ก PUT์ ์ ๋ฌํ๋ฉด UserController์์๋ @PutMapping์ผ๋ก URL์ ๋งคํํ ์ ์๋ค. PUT ๋ฉ์๋ ์ค๋ฅ์ ํด๊ฒฐ๋ฐฉ์ spring.mvc.hiddenmethod.filter.enabl..
[JPA] CrudRepository์ ๋ฉ์๋ ์ถ์ฒ : Spring docs CrudRepository CRUD ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ธํฐํ์ด์ค. org.springframework.data.repository ์ธํฐํ์ด์ค Repository๋ฅผ ํ์ฅํจ. ์ฌ์ฉ @Repository public interface PersonRepository extends CrudRepository { // ... } CrudRepository์ ๋ฉ์๋ long count() ๊ฐ์ฉ entity์ ์๋ฅผ ๋ฐํํจ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฐ์ดํฐ ๊ฐ์ ํ์ธ Delete void delete(T entity) ์ฃผ์ด์ง entity๋ฅผ ์ญ์ ํจ entity๊ฐ null์ด๋ฉด IllegalArgumentException์ ๋์ง void deleteById(ID i..
@RequestMapping ์ฌ์ฉ๋ฒ ๊ณต๋ถํด์ ์ค๋ณตURL ์ ๊ฑฐํ์. ์ฐธ๊ณ : ๋ธ๋ก๊ทธ. ๊ฐ์ฌํฉ๋๋ค! @RequestMapping ์ด๋ ธํ ์ด์ ์ HTTP request๋ก ๋ค์ด์ค๋ URL์ ํน์ ์ปจํธ๋กค๋ฌ์ ํด๋์ค ๋๋ ๋ฉ์๋๋ก ์ฐ๊ฒฐ์ํค๋ ์ญํ ์ ํ๋ค. (์ปจํธ๋กค๋ฌ์ ํด๋์ค ๋ฐ ํน์ ๋ฉ์๋ ๋ชจ๋ ์ ์ฉ ๊ฐ๋ฅํ๋ค) ์ฌ์ค์ URL ๋ฟ ์๋๋ผ ํ๋ผ๋ฏธํฐ, ํค๋ ๋ฑ ์ฌ๋ฌ ๋ฒ์์ ์ ์ฉํ ์ ์๋ค๊ณ ํ๋ค. ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํด ๋์ค์ ๊ณต๋ถํด์ผ๊ฒ ๋ค. @RequestMapping ๋ฅผ ํด๋์ค์ ์ ์ธํ๋ฉด ์ค๋ณตURL์ ์ ๊ฑฐํ ๋ ์ข๋ค. ์๋๋ ์์ . @Controller @RequestMapping("/home") public class TestController { @RequestMapping("/") String getName(){ retur..
์ฌ์ค์ ๋ด๊ฐ ๋ณด๋ ค๊ณ ์ ๋ฆฌํ ๊ฒ์ด์ง๋ง... ๊ทธ๋์ ์ธ๊ฐ, ์์ , ๋ฏธ์ ํ๋ฉฐ ๋ฐฐ์ด ๊ฑธ ์์๋๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ์ ๋ฆฌํด ๋ณด์๋ค. (H2๋ฐ์ดํฐ๋ฒ ์ด์ค, ์คํ๋ง ๋ถํธ, gradle, JPA ์ฌ์ฉ) 0. H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์น H2๋ ๊ฐ๋ฐ ๋ฐ ํ ์คํธ, ๊ต์ก ์ฉ๋์ DB์ด๋ค. ํํ์ด์ง ๊ฐ๋ณ๊ณ (์ฉ๋์ด ์๋ค) ํธ๋ฆฌํ๋ค ์น ํ๋ฉด์ ์ ๊ณตํด ์ค๋ค. ์ ํํ์ด์ง์์ ๋ค์ด๋ก๋ ๋ฐ ์ค์น ํ h2.shํ์ผ์ ์คํํ๋ค. (๊ธฐ๋ณธ์ ์ผ๋ก๋ ํ(~)์ ์ค์น๋๋ค) H2 - bin - h2.sh ์คํ git bash๋ฅผ ์ด์ฉํ๋ฉด ํธํ๋ค. cd ~/H2 - cd bin - ./h2.bat ์๋์ฐ๋ h2.bat (๊น๋ฐฐ์์์๋ ./h2.bat) ์คํ ๋งฅ์ ./h2.sh ์คํ ์ฐธ๊ณ : ์ข ๋ฃ๋ Ctrl + c ๋ก ์ข ๋ฃ. ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ '์น ์ฝ์'..
Heroku๋ก ์คํ๋ง ์ฑ ๋ฐฐํฌํ๊ธฐ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ, ๋ก์น์ ๋ ธ์ , main์ธ์ ๋ธ๋์น๋ก ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ master๊ฐ ์๋ forkํ ๋ธ๋์น๋ช ์ผ๋ก ๋ฐฐํฌํด์ผ ํ๋๋ฐ ๋ช ๋ น์ด๊ฐ ์กฐ๊ธ ๋ฌ๋ผ์ ์ ๋๋ ๊ฑฐ์๋ค!! ๋์ ์ฃผ์ ๊ทธ๋ฃน์ coco, sky ๊ฐ์ฌํฉ๋๋ค๐โ๏ธ๐โ๏ธ ๋จผ์ Heroku ๊ณ์ ์ ๋ง๋ค๊ณ Heroku CLI๋ฅผ ๋ค์ด๋ก๋, ์ค์นํ๋ค. (https://devcenter.heroku.com/articles/deploying-spring-boot-apps-to-heroku) ํฐ๋ฏธ๋์์ heroku login์ ์ ๋ ฅํ๊ณ ๋ง๋ ํค๋ก์ฟ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ค. heroku keys๋ฅผ ์ ๋ ฅํด SSH ํค๊ฐ ์ถ๊ฐ๋์๋์ง ํ์ธํ๊ณ , ์๋ฌด๊ฒ๋ ์์ผ๋ฉด heroku keys:add๋ก ํค๋ฅผ ์ถ๊ฐํ๋ค. ๋ฐฐํฌํ ์คํ๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ด ์..
[Spring] @RequestParam, @PathVariable ์ฐจ์ด ์ฐธ๊ณ : ๋ธ๋ก๊ทธ. ์๋ ์ค๋ช ์ด ์ ๋์ด ์์ด ๋๋ ๊ฐ๋จํ ์ ๋ฆฌ๋ง ํ๊ธฐ๋ก ํ๋ค. ๊ฐ์ฌํฉ๋๋ค! ๋ ๋ค Spring์์ URL์ ํตํด ํด๋ผ์ด์ธํธ๋ก๋ถํฐ Controller์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ๋ ์ฌ์ฉํ๋ ์ด๋ ธํ ์ด์ ์ด๋ค. @RequestParam http://127.0.0.1?index=1&page=2 ์ ๊ฐ์ ํ์์ URL์์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ์์ฌ ๋ ์ฃผ๋ก ์ฌ์ฉ. (์ด๋ฆ&๊ฐ ์ ๋ฌ) ํ๋ผ๋ฏธํฐ ์ด๋ฆ = index, page, ... ํ๋ผ๋ฏธํฐ ๊ฐ = 1, 2 ... @GetMapping("read") public ModelAndView getFactoryRead(@RequestParam("index") int indexNum, SearchCr..
ํ์๊ฐ์ ๊ธฐ๋ฅ ๊ตฌํ ํ์๊ฐ์ ํ์ด์ง์์ ํ์๊ฐ์ ์ ํ๋ฉด, ์ฌ์ฉ์์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์์ ๋ฐ์ ์ถ๋ ฅํ๋ค. ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค. ์์ฑ action : ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ค URL๋ก ๋ณด๋ผ์ง๋ฅผ ์ง์ ํ ์ ์์. : ํด๋น form์ผ๋ก๋ถํฐ /create๋ก ์๋ฒ์ ์์ฒญ์ ๋ณด๋ URL์ด ์ถ๊ฐ๋๋ฉด ํญ์ ์์ํ๋ Controller ๋ฐ ๋ฉ์๋๊ฐ ์์ด์ผ ํ๋ค. formํ๊ทธ์ ์๋ฌด ์์ฑ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก GET๋ฐฉ์์ผ๋ก ํต์ ํ๋ค. index.mustache ์์ด๋ ๋น๋ฐ๋ฒํธ ์ด๋ฆ ์ด๋ฉ์ผ ์ ์ถ ์๋ฌด๊ฒ๋ ์ ๋ ฅํ์ง ์๊ณ ์ ์ถํ์ ๋์ URL : http://localhost:8080/create?userid=&password=&username=&useremail= UserController...