[Spring] JPA: ๊ฐ์ ํ์
ํ ์ด๋ธ์ ์ด๋ ๊ฒ ๊ตฌ์ฑ๋์ด์๋ค๊ณ ๊ฐ์ ํ๋ค.


์ ๋ถ ๊ฐ์ ธ์ค๊ธฐ
findAll์ ๊ธฐ๋ณธ์ผ๋ก ์์ฑ๋๋ ๋ฉ์๋ ์ค ํ๋๋ก, ๊ทธ๋ฅ ๋ฐ์ง ๊ฒ๋ ์์ด ๋ค ๊ฐ์ ธ์จ๋ค.
๋ฐํํ์
์ List<์ํฐํฐํ์
>์ด๋ค.


ํ๋๋ง ๊ฐ์ ธ์ค๊ธฐ
findById๋ ๊ธฐ๋ณธ ์์ฑ๋๋ ๋ฉ์๋๋ค.
๋ฐํํ์
์ Optional<์ํฐํฐํ์
>์ด๋ค.

์ ๊ฐ์ ธ์ค๋ ๊ฑธ ๋ณผ ์ ์๋ค.
์ด์ธ์๋ id ์ด์ธ์ ์์ฑ๊ฐ์ผ๋ก ํ์์ ํ๊ณ ์ถ๋ค๋ฉด, ์ด๋ ๊ฒ ๋ฉ์๋๋ฅผ ๊ตฌํํ๋ฉด ๋๋ค.
findBy์์ฑ๋ช
(@Param("์์ฑ๋ช
") ๋งค๊ฐ๋ณ์)


๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋๋ค.
์ ๋ ฌํด์ ์ ๋ถ ๊ฐ์ ธ์ค๊ธฐ
๋ฉ์๋๋ช
์ OrderBy์ ์ ๋ถ์ด๋ฉด ๋๋ค.
findAllByOrderBy์ ๋ ฌ๊ธฐ์ค
์ด๋ฒ์ name์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ํ๋๋ก ํ๋ค.


๊ทธ๋ผ ๋ญ... name์ผ๋ก ์ ๋ ฌํด์ ์ค๋ฆ์ฐจ์์ผ๋ก ๊ฐ์ ธ์จ๋ค.
์ค๋ฆ์ฐจ์ ๋ฐ ๋ด๋ฆผ์ฐจ์ ์ค์
OrderBy ๊ตฌ๋ฌธ ๋ค์ Asc/Desc๋ฅผ ๋ถ์ด๋ฉด ์ค๋ฆ์ฐจ์/๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ค๋ค. ๋ํดํธ ์ค์ ์ด Asc๋ผ์ Asc๋ ๊ผญ ๋ช ์ํด์ค ํ์๋ ์๋ค.
์ด๋ฒ์ Id๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ ํ๋๋ก ํ๋ค.

๊ฑฐ๊พธ๋ก ์ ๋ณด์ฌ์ค๋ค.
์ ๋ ฌํด์ ๋ช๊ฐ๋ง ๊ฐ์ ธ์ค๊ธฐ
์๋์ ๊ฐ์ด ๋ฉ์๋ ์ด๋ฆ์ ์์ฑํ๋ฉด ๋๋ค.
findTop๊ฐ์OrderBy์ ๋ ฌ์์ฑ



๊ฒ์์กฐ๊ฑด๋ถ์ฌ: After, Before
๊ธฐ์กด์ SQL์์ where์ ์กฐ๊ฑด์์ ํตํด ์กฐ๊ฑด์ ๊ฑธ์์ง๋ง, JPA์๋ ๊ณ ์ ์ ์กฐ๊ฑด ๋จ์ด๋ค์ด ์กด์ฌํ๋ค.
์ผ๋ก๋ก, After๋ ์ธ์๋ก ๋ฐ์ ๊ฐ์ ์ด๊ณผํ๋ค๋ ์กฐ๊ฑด์ ๋ปํ๋ค.
์๋ ์ฝ๋๋ id๊ฐ ์ธ์๊ฐ๋ณด๋ค ํฐ ๊ฒ๋ง ๊ฐ์ ธ์จ๋ค.



Before๋ ๋ฐ๋๋ก, ๋ฏธ๋ง์์ ๋ปํ๋ค.
id๊ฐ ์ธ์๋ก ๋ฐ์ ๊ฐ๋ณด๋ค ์์ ๊ฒ๋ง ๊ฐ์ ธ์ค๋ ์์๋ค.



์กฐ๊ฑด๊ฒฐํฉ
And๋ Or ํค์๋๋ค์ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ๊ฐ์ ์กฐ๊ฑด์ ๋์์ ๋ถ์ฌํ ์ ์๋ค.
์๋๋ After์ Before๋ฅผ ๋์์ ์ฌ์ฉํด์ 3~6 ๊ตฌ๊ฐ์ ๋ฝ์๋ด๊ฒ ํ ๊ฒ์ด๋ค.



์ด์ธ์๋ ๋ฒ์ ์กฐ๊ฑด Between,
= Is, Equals > GreateThan, < LessThan, >= GreateThanEqual, <= LessThanEqual,
๋ ์ฒดํฌ IsNull, IsNotNull, NotNull
๋ฌธ์์ด ํจํด Like,NotLike
ํฌํจ ์ฒดํฌ In, NotIn
๋ฑ ๋ค์ํ ํค์๋๋ค์ด ์ ๊ณต๋๋ค.
์ฐธ์กฐ
https://jobc.tistory.com/120
https://happygrammer.tistory.com/158
https://happygrammer.tistory.com/158