2021-05-25(Tue)
Facts (์ฌ์ค, ๊ฐ๊ด)
์ฝ๋์จ 4์ฃผ์ฐจ ๊ฐ์๋ฅผ ์๊ฐํ์๋ค.
Feelings (๋๋, ์ฃผ๊ด)
์ด์ ์ ์ค์ ํธ๋ ์ด๋๋ ๋์ repository ๊ฐ์ฒด๋ก ๊ด์ฌ์ ๋ถ๋ฆฌํ๋ ์์ค์ผ๋ก ์ฝ๋๋ฅผ ๋ฐ์ ์์ผฐ๋๋ฐ, ์์ฌ๋์ด ๊ฐ์์์ ๊ฐ์ ํ๋ฆ์ผ๋ก ๊ตฌํํ์๋๊ฑธ ๋ณด๊ณ ๊ดํ ๋ฟ๋ฏํ๋ค.
ํํธ ๋ด๊ฐ ์์ง ์์๊ณผ ๊ตฌํ์ ๋ํ ๊ฐ๋
์ด ๋ถ์กฑํ ๊ฒ์ ๋๊ผ๋ค. CrudRepository
์ TaskRepository
๋ฅผ ๋ชจ๋ ์์ํ JpaTaskRepository
๋ฅผ InMemoryTaskRepository
์ ๊ตฌํํ๋ ๋ถ๋ถ์์ ํผ๋์ด ์ฐพ์์๋ค.
๋ ์ธํฐํ์ด์ค๋ฅผ ์์ํ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ๊ฒ์ด๋, ๋ ์ธํฐํ์ด์ค์ ์ํ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๊ตฌํํด์ผํ ๊ฒ ๊ฐ์๋ฐ, ๊ฐ์์์๋ ์ผ๋ถ๋ง ๊ตฌํํ ๊ฒ์ฒ๋ผ ๋ณด์๊ธฐ ๋๋ฌธ์ด๋ค. ํ ์๋ง ๋ด๊ฐ ์ฐฉ๊ฐํ ๊ฒ ๊ฐ์๋ฐ, ๋ด์ผ ๋ณต์ตํด๋ด์ผ๊ฒ ๋ค.
JPA๊ฐ ๋ฅ์ํ์ง ์์๋ฐ, ์ด๋ฒ ์ฃผ์ ๋ง์ด ๋ฐฐ์์ผ๊ฒ ๋ค.
Findings (๋ฐฐ์ด ์ )
์ค๋ฒ๋ผ์ด๋ฉ์ ๋ํ ์คํด
์์ฌ๋์ด Iterable์ ๋ฆฌํดํ๋ ๋ฉ์๋๋ฅผ List๋ฅผ ๋ฆฌํดํ๋ ๋ฉ์๋๋ก ์ค๋ฒ๋ผ์ด๋ฉํ๋ ๊ฒ์ ๋ณด๋ฉฐ ๋ด๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ์ ์ ๋๋ก ๋ชจ๋ฅด๋ ๊ฒ์ ๋๊ปด์ ๋ค์ ํ์ด๋ณด์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ํด์ ์คํดํ๊ณ ์์๋ค.
๋ด๊ฐ ์๊ณ ์๋์ค๋ฒ๋ผ์ด๋ฉ์ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ์๋ค.
์์ ํด๋์ค์์ ์ค๋ฒ๋ผ์ด๋ฉํ๋ ๋ฉ์๋๋ ์กฐ์ ํด๋์ค์ ๋ฉ์๋์
์ด๋ฆ์ด ๊ฐ์์ผ ํ๋ค.
๋งค๊ฐ๋ณ์๊ฐ ๊ฐ์์ผ ํ๋ค.
๋ฐํํ์ ์ด ๊ฐ์์ผ ํ๋ค.
๊ทธ๋ฐ๋ฐ JDK1.5๋ถํฐ๋ '๊ณต๋ณ ๋ฐํํ์ (covariant return type)'์ด ์ถ๊ฐ๋์ด, ๋ฐํํ์ ์ ์์ ํด๋์ค์ ํ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋๋ก ์กฐ๊ฑด์ด ์ํ ๋์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
ํด๋ฆฐ ์ํคํ
์ฒ
์ ํด๋ฆฐ ์ํคํ ์ฒ์์๋ ๊ด์ฌ์ฌ์ ๋ฐ๋ผ layer๋ฅผ ๋๋์๋ค. ์์กด์ฑ์ ๋ฐฉํฅ์ ๊ด๋ฆฌํด์ผ ํ๋๋ฐ, ์์กด์ฑ์ด ๋ฐ๊นฅ ์์์ ์์ผ๋ก ํฅํ๋๋ก ๊ตฌํํด์ผ ํ๋ค. ๋๋ฉ์ธ layer๋ ์ ๊ทธ๋ฆผ์ ์ํฐํฐ์ ํด๋นํ๋ค.
์์กด ๋ฐฉํฅ์ ์์๋ด๊ธฐ ์ํด ์ฝ๋๋ฅผ ๊ณ ์น๊ณ ์ค๋ฅ๋ฅผ ํ์ธํ๋ ํ ํฌ๋์ ๋ฐฐ์ ๋ค.
JPA
Jav์ ORM ๊ธฐ์ ํ์ค์ผ๋ก, ์ธํฐํ์ด์ค์ ๋ชจ์์ด๋ค. Spring data ํ๋ก์ ํธ ์ค JPA๋ฅผ ํ์ฉํ ํ๋ก์ ํธ์ธ Spring data JPA๋ฅผ ํ์ตํ๋ค. JPA์ ์ํฐํฐ๋ DB์ ์ํฐํฐ์ ์ ์ฌํ๋ค. ๋ณดํต ํ ์ด๋ธ ํ๋๊ฐ ๊ฐ์ฒด ํ๋์ ๋์๋๋ ํํ๋ค.
ํ
์คํธ๋?
@DataJpaTest
๋ก ์ค์ JPA์ ์ฐ๊ฒฐ์ํค๊ฑฐ๋, ๋ชฉํนํ๋ฉด ๋๋ค.
ํํธ ์ฑ
์์ ๋ถ๋ฆฌํ๊ธฐ ๋๋ฌธ์, save๊ฐ ์ฑ๊ณตํ์ ๋ task์ ๊ฐ์๊ฐ ๋ฌ๋ผ์ง๋ ๊ฒ์ TaskService
๊ฐ ์๋๋ผ Respository
ํด๋์ค์ ํ
์คํธ์์ ๊ฒ์ฆํ๋ ๊ฒ์ด ๋ฐ๋์งํ ๊ฒ ๊ฐ๋ค.
ํํธ resources ๋๋ ํ ๋ฆฌ ์์ application.yml
ํ์ผ์ ๋ง๋ค์ด์ DB ์ฐ๊ฒฐ์ ๋ช
์ํ ์ ์๋ค.
Affimation (์๊ธฐ ์ ์ธ)
๋๋ ํ๋ฃจํ๋ฃจ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์๋ค.
Last updated