ํด๋น ํฌ์คํธ๋ ์ฌ๋ฌ ํธ์ผ๋ก ๋๋์ด์ ธ ํ๋์ ๊ฐ๋ ์ ์ด๋ฃจ๊ณ ์์ต๋๋ค. ๋ณด๋ค ์์ธํ ํ์ต๊ณผ ์ดํด๋ฅผ ์ํด ๋ค๋ฅธ ํฌ์คํธ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์ :)
- 1 Jpa์ Entity ์ค์ ๋ฐ Repository ์ค์
- 2 create๋ฉ์๋๋ก ํ์๊ฐ์ ์๋น์ค ๋ง๋ค๊ธฐ-๊ผญ ํ์ธํ์ ์ผํด์!!
- 3 read ๋ฉ์๋๋ก ํ์ ๊ฒ์ ์๋น์ค ๋ง๋ค๊ธฐ
- 4 update ๋ฉ์๋๋ก ๊ฐ์ธ์ ๋ณด ์์ ์๋น์ค ๋ง๋ค๊ธฐ
- 5 delete ๋ฉ์๋๋ก ํ์ ํํด ์๋น์ค ๋ง๋ค๊ธฐ
์ ์ ์ฐ๋ฆฌ๋ read ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ Get ๋ฐฉ์์ผ๋ก DB์์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ์ค์ต์ ํ์๋ค. ์ด๋ฒ ์๊ฐ์๋ update๋ก ๊ฐ์ธ ์ ๋ณด ์์ ์๋น์ค๋ฅผ ๋ง๋๋ ์ค์ต์ ํด๋ณด์.
์ด๋ฒ๋ ์ญ์ Controller Test๋ฅผ ๋จผ์ ์ค๋นํ์.
๊ฒฝ๋ก๋ ์ ๋ฒ์ read()
ํ
์คํธ๋ฅผ ์ํํ๋ test/java/repository/UserRepositoryTests.class
๊ฒฝ๋ก์์ update()
๋ฉ์๋๋ฅผ @Test
์ด๋
ธํ
์ด์
๊ณผ ํจ๊ป ๋ง๋ค์ด์ค๋ค.
ํ ์คํธ์ ๊ธฐ๋ณธ์ read()๋ก ๋ถํฐ.
update()
์ ๋ณด์ ์์ ๊ณผ์ ์ ์์๋๋ก ๋์ดํด๋ณด๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๊ฒ์ด๋ค.
- ์์ ์ ํฌ๋งํ๋ ์ ๋ณด ํ์
- ์ ๋ณด์ ๊ฐ ๋ณ๊ฒฝ
- ์ ์ฅ.
1๋ฒ์์ ํฌ๋งํ๋ ์ ๋ณด๋ฅผ ํ์ํ๋ ๊ณผ์ ์ด ๋ฐ๋ก ์ ์๊ฐ์ ๋ฐฐ์ ๋ read()
๋ฉ์๋์ ๊ณผ์ ๊ณผ ์ ํํ ๋์ผํ๋ค.
read()
์ ํ
์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก Optional<User> user
๋ก ๋ฐ์ ๊ฐ์ ifPresent()
๋ก ์กด์ฌํ ๋๋ง ๋๋ค์ setter
๋ฅผ ์ํํ ์ ์๊ฒ ํ๋ค.
๋๋ค์ selectUser
๋ฅผ ์ ์ฅํ์.
๊ทธ๋ฆฌ๊ณ ๋ณ๊ฒฝํ๋ userRepository
์ save()
๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ORM ํ๋ ์์ํฌ๋ก ์ ์ถํ๋ฉด
์ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด์ ์๋น์ค๋ฅผ ์์ฑํด๋ณด์.
User์ ํ์ ์ ๋ณด ๋ณ๊ฒฝ ์๋น์ค
ํ์ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ ์๊น ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ์๋ update()
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๋ณ๊ฒฝํ๊ฒ ๋๋ค.
์ ๊ณผ ๊ฐ์ด controller
ํจํค์ง ์๋์ changeUser()
๋ผ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ์ค๋ค.
PutMapping()
@PutMapping
์ด๋
ธํ
์ด์
์ Body์ ์ ๋ณด๋ฅผ ์กฐ๊ธ ๋ RestFulํ๊ฒ ์ ์กํ๋ ๋ฐฉ์์ธ๋ฐ, ์ฐ๋ฆฌ๊ฐ ๊ฐ์ url์ ์ฌ์ฉํ๋๋ผ๋ HTTP ๋ฉ์๋๋ฅผ ๋ค๋ฅด๊ฒ ํ๋ค๋ฉด ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํํ ์ ์๊ฒ ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์
james์ ์ ๋ณด๊ฐ ์ ์ฅ๋์ด ์๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ฐ๋ฆฌ๋ id๋ฅผ ์ด์ฉํ์ฌ ํด๋น id์ ๋์ํ๋ ์ ๋ณด๋ฅผ account = "Kakao123" password = "Daum111" name = "Steve"๋ก ๋ฐ๊พธ๊ณ ์ถ๋ค. ๋ผ๊ณ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๋๋ค.
1. ์๋ณ์ ์ํด id ๊ฐ์ ์ด์ฉํ๊ณ , ํด๋น id ๊ฐ์ ๋ด์ฉ์ ๋ณ๊ฒฝํ๋ค.
@RequestParam
์ผ๋ก id ๊ฐ์ ๋ฐ๋๋ค.@RequestBody
๋ก ๋ณ๊ฒฝํ Json ํ์์ ๊ฐ์ ๋ฐ๋๋ค.
2. ๋งค๊ฐ๋ณ์๋ก ๋ค์ด์จ id ๊ฐ์ผ๋ก ๋ณ๊ฒฝํ User๋ฅผ ์ฐพ๋๋ค.
๋ณ๊ฒฝํ User
๋ฅผ ์ฐพ์์ผ๋ฉด, ์ ๋ฒ์ ํ๋ Read() ๋ฉ์๋์ ์ฌ์ฉ๋ฒ ๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ๋ฅผ ์ํด ifPresent()
๋ฉ์๋๋ฅผ ์ด์ฉํ๋ค.
3. ์ ํ๋ selectUser
์ @RequestBody๋ก ๋ค์ด์จ ๊ฐ์ ๋ฃ์ด์ค๋ค.
RequestBody๋ก ๋์ด์จ ์ํฐํฐ์์ getter๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ ๊บผ๋ด๊ณ selectUser
๋ก ์ ํ๋ ์ํฐํฐ๋ฅผ setter๋ก ์ ์ฅ์์ผ์ฃผ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
4. userRepository.save()
๋ฅผ ํตํด์ ์ ์ฅํ๊ณ ๊ฐ์ return ์์ผ์ค๋ค.
๋๋ค๋ฅผ ํตํด ๋ง๋ค์ด์ง selectUser
๋ฅผ save(entity)
๋ฉ์๋๋ฅผ ํตํด์ ์ ์ฅ์์ผ์ฃผ๊ณ ๋ง์ง๋ง์ผ๋ก ๊ฐ์ Json ํ์์ผ๋ก return ํด์ค๋ค๋ฉด ๋์ด๋๊ฒ ๋๋ค.
์ ๋์ํ๋์ง Api Tester๋ก ๊ฒ์ฌ๋ฅผ ํด๋ด ์๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํด์ผํ ์ ์ ๊ผญ PUT ๋ฐฉ์์ผ๋ก ์ ์กํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ url์ ์ฐ๋๋ผ๋ ๋ค๋ฅธ ์ญํ ์ ํ ์ ์๊ฒ ํจ์ผ๋ก์จ ์กฐ๊ธ ๋ RESTFul ํ๊ฒ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํด์ง๋ค.
๊ทธ๋ผ DB์๋ ์ ํํ ๊ฒฐ๊ณผ๊ฐ ๋ค์ด์ค๋ ๊ฒ์ ์ ์ ์๋ค.
๋๊ธ