2022. 10. 11. 13:22ใ์ธํ๋ฐ/์ค์ ! QueryDSL
https://hyejin.tistory.com/807
1๏ธโฃ ์๋ธ ์ฟผ๋ฆฌ
: com.querydsl.jpa.JPAExpression ์ฌ์ฉ
- ์๋ธ ์ฟผ๋ฆฌ eq ์ฌ์ฉ
where ์ ์์ ์๋ธ ์ฟผ๋ฆฌ๋ก ์ฌ์ฉํ๋๋ฐ ์ด๋ JPAExpression์ static import ํด์ ์ฌ์ฉํ ์ ์๋ค.
- ์๋ธ์ฟผ๋ฆฌ goe ์ฌ์ฉ
goe๋ ํฌ๊ฑฐ๋ ๊ฐ๋ค
- ์๋ธ์ฟผ๋ฆฌ ์ฌ๋ฌ ๊ฑด ์ฒ๋ฆฌ in ์ฌ์ฉ
where ์์ in์ ์ฌ์ฉํด์ 10์ด๋ณด๋ค ํฐ ํ์์ ์กฐํํ๋ ์ฟผ๋ฆฌ์ด๋ค.
- select ์ ์ subquery
select ์์๋ ์๋ธ ์ฟผ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
โญ from ์ ์ ์๋ธ ์ฟผ๋ฆฌ ํ๊ณ
JPA JPQL ์๋ธ ์ฟผ๋ฆฌ์ ํ๊ณ์ ์ผ๋ก from ์ ์ ์๋ธ์ฟผ๋ฆฌ(์ธ๋ผ์ธ๋ทฐ)๋ ์ง์ํ์ง ์๋๋ค.
JPQL์ด ์ง์ํ์ง ์์ผ๋ฉด ๋น์ฐํ QueryDSL๋ ์ง์ํ์ง ์๋๋ค.
ํ์ด๋ฒ๋ค์ดํธ ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด select ์ ์ ์๋ธ์ฟผ๋ฆฌ๋ ์ง์ํ๋ค.
-> QueryDSL๋ ํ์ด๋ฒ๋ค์ดํธ ๊ตฌํ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด select ์ ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ง์ํ๋ค.
๐ from ์ ์ ์๋ธ์ฟผ๋ฆฌ ํด๊ฒฐ๋ฐฉ์
1. ์๋ธ ์ฟผ๋ฆฌ๋ฅผ join์ผ๋ก ๋ณ๊ฒฝํ๋ค. (๊ทผ๋ฐ ์ด๊ฑด ๊ฐ๋ฅํ ์ํฉ๋ ์๊ณ , ๋ถ๊ฐ๋ฅํ ์ํฉ๋ ์๋ค.)
2. ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฟผ๋ฆฌ๋ฅผ 2๋ฒ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๋ค.
3. nativeSQL์ ์ฌ์ฉํ๋ค.
2๏ธโฃ Case๋ฌธ
: select, ์กฐ๊ฑด์ (where), order by์์ ์ฌ์ฉ ๊ฐ๋ฅ
- ๋จ์ํ ์กฐ๊ฑด
- ๋ณต์กํ ์กฐ๊ฑด
-> ๋ณต์กํ ์กฐ๊ฑด์ ๋ํด์๋ CaseBuilder๋ฅผ ์ฌ์ฉํ๋ค.
๊ทผ๋ฐ ์ด๋ ๊ฒ DB์์ ์กฐํํ๋๋ฐ filter ํ๋ ๊ฒ์ ๋ณ๋ก ์ข์ง ์๋ค๊ณ ํ๋ค. ์ด๋ฐ๊ฑด ๊ทธ๋ฅ ๊ฐ์ ๊ฐ์ ธ์์ ์ ํ๋ฆฌ์ผ์ด์ ์์ filter์ฒ๋ฆฌํ๋๊ฒ ์ข๋ค๊ณ ํจ.
3๏ธโฃ ์์, ๋ฌธ์ ๋ํ๊ธฐ
: ์์๊ฐ ํ์ํ๋ฉด Expressions.constant(xxx) ์ฌ์ฉ
- ๋ฌธ์ ๋ํ๊ธฐ concat
โ ์ฐธ๊ณ
member.age.stringValue() ์ด๋ถ๋ถ์ด ์ค์ํ๋ฐ, ๋ฌธ์๊ฐ ์๋ ๋ค๋ฅธ ํ์ ๋ค์ stringValue()๋ฅผ ์ด์ฉํด์ ๋ฌธ์๋ก ๋ณํํ ์ ์๋ค.
-> ์ด ๋ฐฉ๋ฒ์ ENUM์ ์ฒ๋ฆฌํ ๋ ์์ฃผ ์ฌ์ฉํ๋ค.
'์ธํ๋ฐ > ์ค์ ! QueryDSL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[QueryDSL] 5. ์ค๋ฌด ํ์ฉ - ์์ JPA์ QueryDSL (0) | 2022.10.12 |
---|---|
[QueryDSL] 4. ์ค๊ธ ๋ฌธ๋ฒ (0) | 2022.10.11 |
[QueryDSL] 3. ๊ธฐ๋ณธ ๋ฌธ๋ฒ(1) Q-Type, ๊ฒ์ ์กฐ๊ฑด ์ฟผ๋ฆฌ, ๊ฒฐ๊ณผ ์กฐํ, ์ ๋ ฌ, ํ์ด์ง, ์งํฉ, ์กฐ์ธ(ํ์น ์กฐ์ธ, on์ , ๊ธฐ๋ณธ ์กฐ์ธ) (0) | 2022.10.07 |
[QueryDSL] 2. ์์ ๋๋ฉ์ธ ๋ชจ๋ธ (0) | 2022.10.06 |
[QueryDSL] 1. QueryDSL ์๊ฐ (0) | 2022.10.05 |