๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
TIL

03/12(ํ™”) ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„ Java 54์ผ์ฐจ TIL - QueryDSL

by ๊ฐ์ž๊ฐœ๋ฐœ๊พผ 2024. 3. 12.

 

๐Ÿ“–  ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

  • QueryDSL

 

๐Ÿฅ”  QueryDSL?

: QueryDSL์€ ํ•˜์ด๋ฒ„๋„ค์ดํŠธ ์ฟผ๋ฆฌ ์–ธ์–ด์˜ ์ฟผ๋ฆฌ๋ฅผ ํƒ€์ž…์— ์•ˆ์ „ํ•˜๊ฒŒ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.

: QueryDSL์€ ์ •์  ํƒ€์ž…์„ ์ด์šฉํ•˜์—ฌ SQL๊ณผ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 

: ์ž๋ฐ” ๋ฐฑ์—”๋“œ์—์„œ๋Š” Spring Boot์™€ Spring Data JPA๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

: ํ•˜์ง€๋งŒ, ๋ณต์žกํ•œ ์ฟผ๋ฆฌ, ๋™์  ์ฟผ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

: ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด QueryDSL์ž…๋‹ˆ๋‹ค.

 

: QueryDSL์ด ๋“ฑ์žฅํ•˜๊ธฐ ์ด์ „์—๋Š” Mybatis, JPQL, Criteria ๋“ฑ

: ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ ์ปดํŒŒ์ผ ์‹œ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์˜€์Šต๋‹ˆ๋‹ค.

: ํ•˜์ง€๋งŒ, QueryDSL์€ ์ž๋ฐ” ์ฝ”๋“œ๋กœ SQL ๋ฌธ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด ์ปดํŒŒ์ผ ์‹œ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ

: ์ž˜๋ชป๋œ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โ—๏ธ QueryDSL์˜ ์ฃผ์š” ํŠน์ง•

  1. ํƒ€์ž… ์•ˆ์ •์„ฑ(Type Safety) : QueryDSL์€ ์ž๋ฐ”์˜ ์ •์  ํƒ€์ž… ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ ์ž‘์„ฑ ์ค‘ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํƒ€๋‚˜ ํƒ€์ž… ๋ถˆ์ผ์น˜์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๋ฅผ ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ์ฝ”๋“œ ์ƒ์„ฑ(Code Generation) : QueryDSL์€ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ฉ”ํƒ€๋ชจ๋ธ์„ ์ƒ์„ฑํ•˜๊ณ , ์ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ฝ”๋“œ๋ฅผ ๋”์šฑ ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, IDE์˜ ์ž๋™ ์™„์„ฑ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ : QueryDSL์„ ์‚ฌ์šฉํ•˜๋ฉด SQL๋ฌธ์„ ๋ฌธ์ž์—ด๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ , ์ฟผ๋ฆฌ ์ˆ˜์ • ๋ฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ด์ง‘๋‹ˆ๋‹ค.
  4. ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ง€์› : QueryDSL์€ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ MongoDB์™€ ๊ฐ™์€ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  5. ํ†ตํ•ฉ ์ฟผ๋ฆฌ ์ž‘์„ฑ : QueryDSL์€ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์กฐ์ธ ๋˜๋Š” ๋ณต์žกํ•œ ํ•„ํ„ฐ๋ง๊ณผ ์ •๋ ฌ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ํšจ๊ณผ์ ์ž…๋‹ˆ๋‹ค.

 

 

 

๐Ÿ“š  ์˜ค๋Š˜์˜ ํšŒ๊ณ 

QueryDSL ์–ด๋ ค์šด ๋†ˆ!!