ํด๋น ํฌ์คํธ๋ ์ฌ๋ฌ ํธ์ผ๋ก ๋๋์ด์ ธ ํ๋์ ๊ฐ๋ ์ ์ด๋ฃจ๊ณ ์์ต๋๋ค. ๋ณด๋ค ์์ธํ ํ์ต๊ณผ ์ดํด๋ฅผ ์ํด ๋ค๋ฅธ ํฌ์คํธ๋ ์ฐธ๊ณ ํด์ฃผ์ธ์ :)
- 1 Jpa์ Entity ์ค์ ๋ฐ Repository ์ค์
- 2 create๋ฉ์๋๋ก ํ์๊ฐ์ ์๋น์ค ๋ง๋ค๊ธฐ-๊ผญ ํ์ธํ์ ์ผํด์!!
- 3 read ๋ฉ์๋๋ก ํ์ ๊ฒ์ ์๋น์ค ๋ง๋ค๊ธฐ
- 4 update ๋ฉ์๋๋ก ๊ฐ์ธ์ ๋ณด ์์ ์๋น์ค ๋ง๋ค๊ธฐ
- 5 delete ๋ฉ์๋๋ก ํ์ ํํด ์๋น์ค ๋ง๋ค๊ธฐ
์ ์๊ฐ์ ์ฐ๋ฆฌ๋ create๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ POST๋ฐฉ์์ผ๋ก ํ์๊ฐ์ ์ ๋ณด๋ฅผ ์๋ฒ์๊ฒ Requestํ์๋ค. ์ด๋ฒ์ CRUD์ Read๋ฅผ ํ์ตํด๋ณด์. ํ์ต์ ์ด์ ์ ๋์ผํ๊ฒ ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๊ณ , ์๋น์ค๋ฅผ ๋ง๋๋ ์์๋ก ์ด๋ฃจ์ด์ง ์์ ์ด๋ค.
์ ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก CRUD๋ฅผ ์ํด Controller์ ํ ์คํธ๋ฅผ ์ค๋นํด๋ณด์.
์ ๋ฒ์ create๋ฉ์๋๋ฅผ ๋ง๋ค์์ ๋์ ๋์ผํ๊ฒ Repository์ ๋ํ Read๋ฅผ ํ ์คํธํ ๊ฒ์ด๋ฏ๋ก
test/java/repository/UserRepositoryTests
ํด๋์ค์ read()
ํ
์คํธ ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ฃผ์.
Read๋ ํน์ ๊ฐ์ ์ํ ์ ๋ณด๋ฅผ ์ฝ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ฏ๋ก ํน์ ์ ๋ณด๋ฅผ ๊ฒ์ํ์์ ๊ฐ์ ํ์ฌ ํ ์คํธ๋ฅผ ์์ฑํ๋ค.
findById()
๋ฉ์๋
findById()
๋ฉ์๋๋ ๋งค๊ฐ๋ณ์์ ํด๋นํ๋ ๊ฐ์ ํ ๋๋ก DB์์ ๊ฐ์ ์กฐํํด์ค๋ ์ญํ ์ ์ํํ๋ค. ์๋์์ ๋ณด๋ฉด ์๊ฒ ๋ฏ
์ด findById()
์ default ๋งค๊ฐ๋ณ์๋ Long ํ์
id ์ด๋ค. id๊ฐ์ด ์๋ ๋ค๋ฅธ ๊ฐ์ผ๋ก Read๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ์ถ
ํ์ ์ค๋ช ํ๋๋ก ํ๊ฒ ๋ค.
findById()
์ ๋ฐํํ Optional<T>
์ฐ๋ฆฌ๋ id๊ฐ์ ์ฃผ๋ฉด ํด๋น id์ ๊ด๋ จ๋ Data๋ฅผ Jpa๊ฐ ๊บผ๋ด์จ๋ค๊ณ ํ๋๋ค. ๊ทธ๋ ๋ค๋ฉด User
์ ๋ณด๋ฅผ ์ป๊ณ ์ถ์ผ๋ฏ๋ก findById()
์ return ๊ฐ์ User
๋ก ๋ฐ์ผ๋ฉด ๋๋๊ฑฐ ์๋๊ฐ? ํ ๋ฒ ํด๋ณด์
๊ทผ๋ฐ ๋ญ๊ฐ ์ด์ํ๋ค.. ๋นจ๊ฐ ์ค์ด ๋จ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋์จ๋ค... ํ ๋ฒ findById()
๋ฉ์๋๋ฅผ ํ๊ณ ๋ค์ด๊ฐ๋ณด์.
๋ณด๋ findByid()
๋ฉ์๋๋ ์กฐํํ๋ ค๋ ๊ฐ์ด ์กด์ฌํ ์๋, ์กด์ฌํ์ง ์์ ์๋ ์์ด์ null์ ์ํ ์ค๋ฅ๋ฅผ ์ต์ํ ํ๊ธฐ ์ํด ๋ฆฌํด์ผ๋ก Optional<T>
๋ฅผ ๋ฐ๋๋ค.
Optional<User>
์ ifPresent()
๋ฉ์๋์ isPresent()
๋ฉ์๋
Optional
์์ ๋ง์ด ์ฌ์ฉํ๋ ๊ฒ ์ค ํ๋๊ฐ ifPresent()
๋ฉ์๋์ isPresent()
๋ฉ์๋ ์ด๋ค. ๊ทธ ํน์ง๊ณผ ์ฐจ์ด์ ์ ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด
ifPresent()
- ํน์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์๋๋ค.
- Optional์ ๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ์๋ง ์คํ๋ ๋ก์ง์ด ํจ์์ ์ธ์๋ก ์ ๋ฌ๋๋ค.
- ํจ์ํ ์ธ์๋ก ๋๋ค์์ด ๋์ด์ฌ ์ ์๋ค.
isPresent()
- ํน์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์๋๋ค.
- ํ์ฌ optional์ ๊ฐ์ด null์ธ์ง ํ์ธํ๋ค.
if-else
๋ฌธ์ ์ฌ์ฉํ์ง ์๊ณ ๋ null๊ฐ ์กด์ฌ ๊ฒ์ฌ๋ฅผ ํ ์ ์๋ค.
๊ณผ ๊ฐ์๋ฐ ์ฐ๋ฆฌ๋ user.ifPresent()
์์ ๋๋ค์์ผ๋ก select
sql๋ฌธ๋ฒ์ด ์งํ๋ ํ๋ฅผ ๊ฐ์ ํ์ฌ selectUser
๋ก Optional
๊ฐ์ด ์์ ๋๋ง ํจ์ ๋ก์ง์ ์คํ์ํฌ ๊ฒ์ด๋ค.
๊ทธ๋ผ ๋ค์ ํ ์คํธ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ปดํ์ผ๋ฌ์๊ฒ ์ ์ถํด๋ณด์
์ปดํ์ผ ์์๋ 9L์ด ์๋๋ผ 1L์ผ๋ก ์์ ํ์์ต๋๋ค..
๋ค์๊ณผ ๊ฐ์ด ์ ์๋ํ๋ ๊ฒ์ ์ ์ ์๋ค.
์๋น์ค๋ฅผ ๋ง๋ค์ด๋ณด์!
์ด์ test ์ฝ๋๊ฐ ์๋ ์๋น์ค ์ฝ๋๋ฅผ ์ํด ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋ณด์.
1. controller
ํจํค์ง ์๋์ UserController
์์ String์ returnํ๋ findUser()
๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ค๋ค.
์ ๋ฒ์ ์ฐ๋ฆฌ๊ฐ ํ์๊ฐ์ ์ ๋ง๋ค ๋๋ Post ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ํต์ ์ ์งฐ์ง๋ง ์ด๋ฒ์๋ ์๋ฃ์ ๊ฒ์์ด ๋ชฉ์ ์ด๋ฏ๋ก Get๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ํต์ ์ ์ง๋ณด์.
@GetMapping()
์ ํตํด์ Get ๋ฉ์๋๋ก ์ ๋ณด ๊ฒ์์ ํ๋ค.
- Test์ ๋ง์ฐฌ๊ฐ์ง๋ก
Optional
์ ์ด์ฉํ์ฌfindById()
์ ๋ฆฌํด๊ฐ์ ๋ฐ์์ฃผ๊ณget()
์ผ๋ก Json ํ์ ์ ์ ๋ณด๋ฅผ ๋ฐ์์ ํ๋ฉด์ ์ถ๋ ฅํด์ค๋ค.
๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ ์ถ๋ ฅ๋๋ ๊ฒ์ผ๋ก ์ ์ ์๋ค.
๋๊ธ