๐ ์ค๋์ ํ์ต ํค์๋
- QueryDSL
๐ฅ QueryDSL?
: QueryDSL์ ํ์ด๋ฒ๋ค์ดํธ ์ฟผ๋ฆฌ ์ธ์ด์ ์ฟผ๋ฆฌ๋ฅผ ํ์ ์ ์์ ํ๊ฒ ์์ฑ ๋ฐ ๊ด๋ฆฌํด ์ฃผ๋ ํ๋ ์์ํฌ์ ๋๋ค.
: QueryDSL์ ์ ์ ํ์ ์ ์ด์ฉํ์ฌ SQL๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๊ฒ ํด์ค๋๋ค.
: ์๋ฐ ๋ฐฑ์๋์์๋ Spring Boot์ Spring Data JPA๋ฅผ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
: ํ์ง๋ง, ๋ณต์กํ ์ฟผ๋ฆฌ, ๋์ ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํํ๋ ๋ฐ ์์ด์ ํ๊ณ๊ฐ ์์ต๋๋ค.
: ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ฒ์ด QueryDSL์ ๋๋ค.
: QueryDSL์ด ๋ฑ์ฅํ๊ธฐ ์ด์ ์๋ Mybatis, JPQL, Criteria ๋ฑ
: ๋ฌธ์์ด ํํ๋ก ์ฟผ๋ฆฌ๋ฌธ์ ์์ฑํ์ฌ ์ปดํ์ผ ์์ ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ์์ต๋๋ค.
: ํ์ง๋ง, QueryDSL์ ์๋ฐ ์ฝ๋๋ก SQL ๋ฌธ์ ์์ฑํ ์ ์์ด ์ปดํ์ผ ์์ ์ค๋ฅ๋ฅผ ๋ฐ์์์ผ
: ์๋ชป๋ ์ฟผ๋ฆฌ๊ฐ ์คํ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
โ๏ธ QueryDSL์ ์ฃผ์ ํน์ง
- ํ์ ์์ ์ฑ(Type Safety) : QueryDSL์ ์๋ฐ์ ์ ์ ํ์ ์์คํ ์ ํ์ฉํ์ฌ ์ฟผ๋ฆฌ ์์ฑ ์ค ๋ฐ์ํ ์ ์๋ ์คํ๋ ํ์ ๋ถ์ผ์น์ ๊ฐ์ ์ค๋ฅ๋ฅผ ์ปดํ์ผ ์์ ์ ๊ฐ์งํ ์ ์์ต๋๋ค.
- ์ฝ๋ ์์ฑ(Code Generation) : QueryDSL์ ์ํฐํฐ ํด๋์ค์ ๋ํ ๋ฉํ๋ชจ๋ธ์ ์์ฑํ๊ณ , ์ด๋ฅผ ํ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ์ฝ๋๋ฅผ ๋์ฑ ์์ ํ๊ฒ ๋ง๋ค์ด์ค ๋ฟ๋ง ์๋๋ผ, IDE์ ์๋ ์์ฑ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
- ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ : QueryDSL์ ์ฌ์ฉํ๋ฉด SQL๋ฌธ์ ๋ฌธ์์ด๋ก ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ์๋ฐ ์ฝ๋๋ก ์์ฑํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฐ๋ ์ฑ์ด ํฅ์๋๊ณ , ์ฟผ๋ฆฌ ์์ ๋ฐ ์ ์ง๋ณด์๊ฐ ์ฉ์ดํด์ง๋๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ง์ : QueryDSL์ SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฟ๋ง ์๋๋ผ MongoDB์ ๊ฐ์ NoSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ง์ํฉ๋๋ค.
- ํตํฉ ์ฟผ๋ฆฌ ์์ฑ : QueryDSL์ ์ฌ๋ฌ ํ ์ด๋ธ ๊ฐ์ ์กฐ์ธ ๋๋ ๋ณต์กํ ํํฐ๋ง๊ณผ ์ ๋ ฌ์ ์ฒ๋ฆฌํ๋ ๋ฐ ํจ๊ณผ์ ์ ๋๋ค.
๐ ์ค๋์ ํ๊ณ
QueryDSL ์ด๋ ค์ด ๋!!
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
03/14(๋ชฉ) ๋ด์ผ๋ฐฐ์์บ ํ Java 56์ผ์ฐจ TIL - AWS (0) | 2024.03.14 |
---|---|
03/13(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 55์ผ์ฐจ TIL - Spring AOP (0) | 2024.03.13 |
03/11(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 53์ผ์ฐจ TIL - SOLID (0) | 2024.03.12 |
03/08(๊ธ) ๋ด์ผ๋ฐฐ์์บ ํ Java 52์ผ์ฐจ TIL - @OneToOne (0) | 2024.03.08 |
03/07(๋ชฉ) ๋ด์ผ๋ฐฐ์์บ ํ Java 51์ผ์ฐจ TIL - Cascade, orphanRemoval (0) | 2024.03.07 |