๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (454)
Bibi's DevLog ๐ค๐
AWS Ubuntu์ ์คํ๋ง ์ฑ ๋ฐฐํฌ ๊ณผ์ ๋ค์ ์ ๋ฆฌ .. AWS ์ธ์คํด์ค(์ฐ๋ถํฌ)๋ ์์ฑ ๋ฐ ์คํ๋์ด ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. AWS EC2 ์ฐ๋ถํฌ์ mysql ์ค์น MySQL ์ค์น sudo apt update sudo apt-get install mysql-server MySQL ์ ์ mysql -u root -p (์ ์ ๋๋ฉด sudo mysql -u root -p) (ํจ์ค์๋๋ ์ค์ ํ ๊ฐ ์ ๋ ฅ, ์์ผ๋ฉด ๊ทธ๋ฅ ์ํฐ) ์์ฑํ ์ ์ ๋ก ์ ์ํ๋ ค๋ฉด mysql -u ์ ์ ์ด๋ฆ -p MySQL ์ฌ์ฉ์ ์์ฑ create user '์ฌ์ฉ์์ด๋ฆ'@'ip์ฃผ์' identified by '๋น๋ฐ๋ฒํธ'; flush privileges; ๋ชจ๋ ip์์ ์ ์์ ํ์ฉํ๊ณ ์ถ๋ค๋ฉด create ..
Http Response Body์ Exception error message ์ง์ ํ๊ธฐ ์ง์ ๋ง๋ ์๋ฌ๋ฉ์์ง๋ฅผ Http Response์ "message" :์ ๋ฃ์ด ์ค ์ ์๋ค. ๋จผ์ Exception๊ณผ ์๋ฌ๋ฉ์์ง๋ฅผ ๋ง๋ ๋ค. DishController.java // ... @PutMapping("/{dishId}") public ResponseEntity orderDish(@PathVariable String dishId, @RequestParam("count") int orderSize) { if (dishService.orderDish(dishId, orderSize)) { return ResponseEntity.ok().body(new ResponseDto(Status.OK)); } return ..
@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..
Optional Optional ์ต์ ๋ : ''๊ฐ์ฒด''๊ฐ null์ธ์ง ์๋์ง ํ๋ณํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. Optional byId = userRepository.findById(id); ↓ User user = userRepository.findById(id).orElseGet(User::new); ๋๋ค๋ฅผ ๋ฉ์๋์ฐธ์กฐ๋ก ๋ฐ๊พธ๊ธฐ () -> new User() == User::new ๋๋ค์์ ์ถ์ฝํ ๋ฉ์๋ ์ฐธ์กฐ์?์ด๋ค. orElseGet() : null์ผ ๋ ()์์ ์คํํ๋ค. ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๊ธฐ ๋๋ฌธ์ ๋๋ค์์ ๋ฃ์ด์ฃผ์ด์ผ ํ๋ค orElseThrow() : null์ผ ๋ ํด๋น ์์ธ๋ฅผ ๋์ง๋ค. (๊ฒฐ๊ตญ Optional ์ฌ์ฉํ ๋๋ ํญ์ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ, ๋๋ค์ ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ๋ฉด ๋..
github.com/bibi6666667/TIL/tree/main/2021.03 bibi6666667/TIL TIL ์ ์ฅ์์ ๋๋ค. Contribute to bibi6666667/TIL development by creating an account on GitHub. github.com 2021๋ 3์ ํ ๋ฌ ๋์ ์์ฑํ TIL์ ๋๋ค.
๋์์ฑ Concurrency (+ ๋ณ๋ ฌ์ฑ) ์ถ์ฒ : ๋ธ๋ก๊ทธ1, ๋ธ๋ก๊ทธ2 Q. ์ฌ๋ฌ ์ฌ์ฉ์์๊ฒ์ ์์ฒญ์ด ๋์์ ๋ค์ด์ฌ ๋, ArrayList๋ ์ด๋ป๊ฒ ๋์ํ๊ฒ ๋ ๊น์? '๋์์~ ์ฌ๋ฌ~' ๊ฐ ๋ฑ์ฅํ๋ฉด ๋์์ฑ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ์๋ฉด ๋ ๊ฒ ๊ฐ์์. ๋จ์ํ ArrayList๋ ๋์์ฑ ๋ฌธ์ ์์ ์์ ํ์ง ๋ชปํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค! (์ค๋ ๋ ๊ฐ๋ ๊ณผ ์ด์ด์ง) ๋น๋๊ธฐ Asynchronous ํ๋ก๊ทธ๋๋ฐ - ๋์์ฑ๊ณผ ๋ณ๋ ฌ์ฑ : ์ฝ๋ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋ค์ ์ฝ๋๋ฅผ ์คํํ๋ ๋ณ๋ ฌ ์ฒ๋ฆฌ ๋ฐฉ์. ํ๋ก๊ทธ๋จ์ ์ฃผ ์คํ ํ๋ฆ์ ๋ฉ์ถ์ด์ ๊ธฐ๋ค๋ฆฌ๋ ๋ถ๋ถ ์์ด, ๋ฐ๋ก ๋ค์ ์์ ์ ์คํํ ์ ์๊ฒ ํจ ๋์์ฑ Concurrency ํ๋ก๊ทธ๋๋ฐ : ๋ ผ๋ฆฌ์ ์ผ๋ก ๋์์ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ. ๋ฉํฐํ์คํน์ ์ฌ๋ฌ ์ค๋ ๋๋ฅผ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ..
[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..