1. QueryDSL์ด๋ ๋ฌด์์ธ๊ฐ?
QueryDSL์ Java์์ ํ์ ์์ ํ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก SQL ์ฟผ๋ฆฌ๋ ๋ฌธ์์ด๋ก ์์ฑ๋์ง๋ง,
QueryDSL์ ์ด๋ฅผ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์์ฑํ์ฌ ์ปดํ์ผ ํ์์ ์ค๋ฅ๋ฅผ ํ์ธํ ์ ์๋๋ก ํ๋ค.
๊ทธ๋ก ์ธํด SQL ์ฟผ๋ฆฌ์ ์์ ์ฑ์ด ๋์์ง๊ณ , ์ง๊ด์ ์ธ ์ฟผ๋ฆฌ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ฃผ์ ํน์ง
- ํ์ ์์ ์ฑ: SQL ๋ฌธ๋ฒ ์ค๋ฅ๋ฅผ ์ปดํ์ผ ํ์์ ๋ฐ๊ฒฌํ ์ ์๋ค.
- ๊ฐ์ฒด ์งํฅ์ ์ฟผ๋ฆฌ ์์ฑ: SQL ์ฟผ๋ฆฌ๋ฅผ ์๋ฐ ์ฝ๋๋ก ์์ฑํ ์ ์๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๊ฐ๋ฅ: SQL, JPA, MongoDB ๋ฑ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํธํ๋๋ค.
2. QueryDSL์ ์ฌ์ฉํด์ผ ํ๋ ์ด์
2.1. ํ์ ์์ ์ฑ ํ๋ณด
SQL ์ฟผ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์์ด๋ก ์์ฑ๋๋ค.
์ด ๊ฒฝ์ฐ SQL ๊ตฌ๋ฌธ์ ์ค์๋ ์คํ๊ฐ ์์ ๋ ๋ฐํ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ค.
ํ์ง๋ง QueryDSL์ ์๋ฐ ์ฝ๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ์ฌ ์ปดํ์ผ ํ์์ ์ค๋ฅ๋ฅผ ์ฌ์ ํ์ธํ ์ ์๋ค.
์ด๋ ์ฝ๋์ ์์ ์ฑ์ ๋์ฌ์ฃผ๊ณ , ๋๋ฒ๊น ์๊ฐ์ ๋จ์ถ์ํจ๋ค.
2.2. ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ ํฅ์
SQL ์ฟผ๋ฆฌ๋ฅผ ์๋ฐ ๊ฐ์ฒด๋ก ์์ฑํ ์ ์์ด ์ฝ๋์ ๊ฐ๋ ์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ค.
๋ํ, ๋ณต์กํ ์ฟผ๋ฆฌ๋ ๊ฐ์ฒด ์งํฅ์ ์ธ ๋ฐฉ์์ผ๋ก ์์ฑ๋์ด ์ ์ง๋ณด์๊ฐ ์ฉ์ดํ๋ค.
ํนํ ํ ํ๋ก์ ํธ์์๋ ํ์๋ค ๊ฐ์ ํ์ ๊ณผ ์์ ์ด ์ฌ์์ง๋ค.
2.3. SQL ์์ฑ์ ์ฉ์ดํจ
QueryDSL์ SQL ์ฟผ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ์์ฑํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
JOIN, WHERE, ORDER BY ๋ฑ์ ์กฐ๊ฑด์ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ด ๋ณต์กํ ์ฟผ๋ฆฌ ์์ฑ ์์๋ ์ ์ฉํ๋ค.
3. QueryDSL ์ฌ์ฉ ํํฉ
QueryDSL์ Java ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ๋งค์ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ค.
ํนํ JPA์์ ์ฐ๋์ ํตํด SQL ์ฟผ๋ฆฌ๋ฅผ ์์ ํ๊ณ ํจ์จ์ ์ผ๋ก ์์ฑํ ์ ์์ด,
์คํ๋ง ๋ถํธ(Spring Boot) ํ๋ก์ ํธ์์ JPA์ ๊ฒฐํฉํ์ฌ ๋ง์ด ์ฌ์ฉ๋๋ค.
Hibernate์์ ํตํฉ์ด ์ ๋์ด ์์ด ์์ ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
๊ทธ๋ฆฌ๊ณ 2025.01์ Spring์์ ๊ณต์์ ์ผ๋ก OpenFeign QueryDsl ์ง์์ ๊ฒฐ์ ํ๊ฒ ๋ค๊ณ ๋ฐํํ ๋ฐ ์๋ค.
- Java ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ํ์ ์์ ํ ์ฟผ๋ฆฌ ์์ฑ์ ์ ํธํ ๋ ๋ง์ด ์ฌ์ฉ๋๋ค.
- ์คํ๋ง ๋ถํธ(Spring Boot)์์ JPA/Hibernate์ ๊ฒฐํฉํ์ฌ ์ฌ์ฉ๋๋ค.
4. QueryDSL ์ธ์ ๋ค๋ฅธ ๋์๋ค
QueryDSL ๋์: MyBatis, JOOQ, Kotlin JDSL, JPQL
1. MyBatis
- ์ฅ์ :
- ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ ๋ก์ง์ ์ฒ๋ฆฌํ ๋ ์ ๋ฆฌํ๋ค.
- SQL์ ์ง์ ์ ์ดํ ์ ์์ด ์์ ๋๊ฐ ๋๋ค.
- JPA์ ํจ๊ป ์ฌ์ฉํ ์ ์์ด, ๋ ๊ธฐ์ ์ ํผํฉํ์ฌ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค.
- ๋จ์ :
- SQL์ ์ง์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ํ์ ์์ ์ฑ์ด ๋ถ์กฑํ๋ค.
- ์ฟผ๋ฆฌ ์์ฑ ์ ์ค์๋ ์คํ๊ฐ ๋ฐ์ํ ์ ์๋ค.
ํ์ฉ ์ฌ๋ก: MyBatis๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต์กํ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๊ณ ,
๋๋จธ์ง ๋ถ๋ถ์ JPA๋ก ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด ์์ฃผ ์ฌ์ฉ๋๋ค.
2. JOOQ
- ์ฅ์ :
- ํ์ ์์ ์ฑ ์ ๊ณต
- SQL์ Java ์ฝ๋๋ก ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์์ฑ ๊ฐ๋ฅ
- ๋ณต์กํ SQL ์ฟผ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์
- ๋จ์ :
- ํ์ต ๊ณก์ ์ด ๋ค์ ๊ฐํ๋ฅผ ์ ์๋ค.
- SQL ์์ฑ์ ์์ด ์ผ๋ถ ๊ฐ๋ฐ์๋ ๋ถํธํ ์ ์๋ค.
ํ์ฉ ์ฌ๋ก: ๋ณต์กํ SQL ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ๋ SQL์ ์ง๊ด์ฑ์ ๋์ฌ์ฃผ๋ ๋๊ตฌ๋ก ์ ์ฉํ๋ค.
ํนํ SQL์ ์์ ๋กญ๊ฒ ์์ฑํด์ผ ํ ๋ ์ ํฉํ๋ค.
3. Kotlin JDSL
- ์ฅ์ :
- ํ์ ์์ ์ฑ์ ์ ๊ณตํ๋ฉด์๋ ๊ฐํธํ ์ฟผ๋ฆฌ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
- ๋ฉํ ๋ชจ๋ธ์ ํ์๋ก ํ์ง ์๊ธฐ ๋๋ฌธ์ QueryDSL๋ณด๋ค ๊ฐํธํ๋ค.
- **DSL(Domain Specific Language)**์ ํ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์ง๊ด์ ์ผ๋ก ์์ฑํ ์ ์๋ค.
- ๋จ์ :
- Kotlin์ ์ฌ์ฉํด์ผ ํ๋ฏ๋ก, Java ๊ธฐ๋ฐ ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ์ ํฉํ์ง ์๋ค.
ํ์ฉ ์ฌ๋ก: Kotlin ํ๋ก์ ํธ์์ ํ์ ์์ ์ฑ์ ๊ฐ๋ ์ฟผ๋ฆฌ ์์ฑ ํ๊ฒฝ์ ์ ๊ณตํ๋ฉฐ,
๊ฐํธํ๊ฒ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค.
4. JPQL (Java Persistence Query Language)
- ์ฅ์ :
- JPA์ ์๋ฒฝํ๊ฒ ํตํฉ๋์ด ์ฌ์ฉ๋๋ค.
- ๊ฐ์ฒด ์งํฅ์ ์ด๊ณ , ์ํฐํฐ ํด๋์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค.
- ๋จ์ :
- ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ฑฐ๋ ๊ตฌํ์ด ์ด๋ ค์ธ ์ ์๋ค.
- ๋์ ์ฟผ๋ฆฌ ์์ฑ ์ ๋ถํธํ ์ ์๋ค.
ํ์ฉ ์ฌ๋ก: ๊ฐ๋จํ ์ฟผ๋ฆฌ ์์ฑ์ด๋ JPA์์ ๊ธฐ๋ณธ์ ์ธ ์ฟผ๋ฆฌ ์์ฑ ์ ์ ์ฉํ๋ค.
๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋ค๋ฃฐ ๋๋ QueryDSL ๋๋ MyBatis์์ ๊ฒฐํฉ์ด ํ์ํ๋ค.
ํน์ง | QueryDSL | MyBatis | JOOQ | Kotlin JDSL | JPQL |
ํ์ ์์ ์ฑ | ์ปดํ์ผ ํ์์ ์ค๋ฅ ๊ฒ์ถ ๊ฐ๋ฅ | ๋ฐํ์ ์ค๋ฅ ๋ฐ์ | ์ปดํ์ผ ํ์์ ์ค๋ฅ ๊ฒ์ถ ๊ฐ๋ฅ | ํ์ ์์ ์ฑ ์ ๊ณต | ์ปดํ์ผ ํ์ ์ค๋ฅ ๊ฒ์ถ ๊ฐ๋ฅ |
๊ฐ๋ ์ฑ | ์ง๊ด์ ์ด๊ณ ๊ฐ๊ฒฐํ ์ฝ๋ ์์ฑ ๊ฐ๋ฅ | SQL์ ์ง์ ์์ฑํ์ง๋ง ์ฝ๋๊ฐ ํผ๋์ค๋ฌ์ธ ์ ์์ | SQL์ Java ์ฝ๋๋ก ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์์ฑ ๊ฐ๋ฅ | ๊ฐํธํ ์ฟผ๋ฆฌ ์์ฑ ๊ฐ๋ฅ, ๋ฉํ ๋ชจ๋ธ ๋ถํ์ | ๊ฐ์ฒด ์งํฅ์ ์ด์ง๋ง ๋ณต์กํ ์ฟผ๋ฆฌ ์ ๊ฐ๋ ์ฑ ๋จ์ด์ง |
์ ์ง๋ณด์์ฑ | ๋์ ์ ์ง๋ณด์์ฑ, ๋ฆฌํฉํ ๋ง ์ฉ์ด | ์ ์ง๋ณด์์ ์ด๋ ค์ | SQL ์ ์ด๊ฐ ์ฉ์ดํ๋ ์ฝ๋๊ฐ ๊ธธ์ด์ง ์ ์์ | ์ ์ง๋ณด์์ ์ฉ์ด | ๋ณต์กํ ์ฟผ๋ฆฌ ์์ฑ ์ ์ด๋ ค์ |
์ฌ์ฉ ์ฉ์ด์ฑ | SQL์ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ | SQL์ ์์ ๋กญ๊ฒ ์ ์ดํ ์ ์์ง๋ง ์ ์ฝ์ด ์์ | JOOQ ์ฌ์ฉ๋ฒ์ ์ตํ๊ธฐ ์ด๋ ค์ธ ์ ์์ | Kotlin ๊ธฐ๋ฐ ํ๋ก์ ํธ์์ ๊ฐํธํ ์ฟผ๋ฆฌ ์์ฑ | JPA์ ํตํฉ๋์ด ์์ผ๋ ๋ณต์กํ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ๋ถํธ |
์ฃผ์ ์ฌ์ฉ์ฒ | ๋ณต์กํ ์ฟผ๋ฆฌ ์์ฑ, JPA์ ํจ๊ป ์ฌ์ฉ ์ ํฉ | ๋ณต์กํ SQL ์์ , SQL ์ ์ด๊ฐ ์ค์ํ ๊ฒฝ์ฐ | SQL์ ์์ ๋กญ๊ฒ ์์ฑํ๊ณ ํ์ ์์ ์ฑ์ ์ ๊ณต | Kotlin์ ์ฌ์ฉํ ํ์ ์์ ์ฑ ์๋ ์ฟผ๋ฆฌ ์์ฑ | JPA๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์์ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ ์์ฑ |
- JPQL์ JPA์์ ์ ๊ณตํ๋ ์ฟผ๋ฆฌ ์ธ์ด๋ก, ๊ฐ์ฒด ์งํฅ์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ ์ ์๋ค.JPA๋ฅผ ์ฌ์ฉํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ฉฐ, ์ํฐํฐ ํด๋์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- Kotlin JDSL์ Kotlin์์ ํ์ ์์ ์ฑ์ ์ ๊ณตํ๋ฉฐ, QueryDSL๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ์ ๊ฐ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๋ฉํ ๋ชจ๋ธ์ ํ์๋ก ํ์ง ์๊ณ , ๊ฐํธํ ์ฟผ๋ฆฌ ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
- JOOQ๋ Java๋ก SQL์ ์์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๋๊ตฌ๋ก, ํ์ ์์ ์ฑ๊ณผ SQL์ ์ง๊ด์ฑ์ ์ ๊ณตํ๋ค. QueryDSL๊ณผ ์ ์ฌํ ๋ฐฉ์์ผ๋ก SQL์ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์์ฑํ ์ ์๋ค.
- MyBatis๋ SQL์ ์ง์ ์์ฑํ ์ ์๋ SQL Mapper์ด๋ค. JPA์ ๊ฒฐํฉํ์ฌ ๋์ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ๋ฅผ ๋ถ๋ดํ๋ ๋ฐฉ์์ผ๋ก ์์ฃผ ์ฌ์ฉ๋๋ค. ์ฃผ๋ก ๋ณต์กํ ์ฟผ๋ฆฌ๋ ์์ ๋ก์ด SQL ์์ฑ์ด ํ์ํ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค.
- JPA์์ ๋์ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์์ด QueryDSL ์ธ์๋ ๋ค์ํ ๋์๋ค์ด ์กด์ฌํ๋ค. ๊ทธ ์ค์์ MyBatis, JOOQ, Kotlin JDSL, JPQL ๋ฑ์ด ์ฃผ์ ๋์์ผ๋ก ๊ผฝํ๋ค. ๊ฐ ๋๊ตฌ์ ํน์ฑ๊ณผ ์ฅ๋จ์ ์ ๋น๊ตํด ๋ณด์.
5. QueryDSL์ ์ฌ์ฉํ์ง ์๋ ํ๊ฒฝ
QueryDSL์ ์ฌ์ฉํ์ง ์๋ ์ด์ ๋ ์กด์ฌํ๋ค.
5.1. ํ์ต ๊ณก์
QueryDSL์ JPA Criteria API์ ๋นํด ํ์ต ๊ณก์ ์ด ์๋ค.
์ฟผ๋ฆฌ ์์ฑ ๋ฐฉ์์ ์ต์ํ์ง ์๋ค๋ฉด ์ฒ์ ์ฌ์ฉํ ๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆด ์ ์์ง๋ง, ์ฌ์ฉ์ ์ต์ํด์ง๋ฉด ๋งค์ฐ ํจ์จ์ ์ด๋ค.
5.2. ๋ณต์กํ ํ๊ฒฝ์์๋ ํ์ ์๋ ๊ฒฝ์ฐ๋ ์์
๊ฐ๋จํ ์ฟผ๋ฆฌ๋ ์์ ํ๋ก์ ํธ์์๋ MyBatis๋ JPA Criteria API๊ฐ ๋ ๊ฐ๋จํ๊ณ ํจ์จ์ ์ผ ์ ์๋ค.
5.3. ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
QueryDSL์ ์ฌ์ฉํ๋ ค๋ฉด ์ถ๊ฐ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์์กด์ฑ์ ์ถ๊ฐํด์ผ ํ๋ค.
์ด๋ ํ๋ก์ ํธ์ ๋ณต์ก๋๋ฅผ ์ฆ๊ฐ์ํฌ ์ ์๋ค.
6. QueryDSL ์ฌ์ฉ ๋ฐฉ๋ฒ
QueryDSL์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ๋ค. ์๋์ ๋จ๊ณ๋ณ ๋ฐฉ๋ฒ์ ๋ฐ๋ผํ๋ฉด ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ค:
- ์ํฐํฐ ํด๋์ค ์ค๋น: @Entity๋ก ์ ์ธ๋ ํด๋์ค๋ฅผ ์ค๋นํ๋ค.
- QueryDSL ์์กด์ฑ ์ถ๊ฐ: Gradle์ด๋ Maven์ ํตํด QueryDSL ์์กด์ฑ์ ์ถ๊ฐํ๋ค.
- ์ฟผ๋ฆฌ ํ์ ์์ฑ: QueryDSL์ JPA ์ํฐํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก **Q ํด๋์ค(์ฟผ๋ฆฌ ํ์ )**๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ค.
- ์ฟผ๋ฆฌ ์์ฑ: JPAQueryFactory๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
- ์ฟผ๋ฆฌ ์คํ: fetch(), fetchOne() ๋ฑ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ค.
7. ๊ฒฐ๋ก
QueryDSL์ ํ์ ์์ ํ SQL ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์ด๋ค.
JPA์ ๊ฒฐํฉํ์ฌ ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ฉฐ,
ํ์ ์์ ์ฑ๊ณผ ๊ฐ์ฒด ์งํฅ์ ์ธ ์ฟผ๋ฆฌ ์์ฑ์ ์ฅ์ ์ด ํฌ๋ค. ์ฒ์์๋ ํ์ต์ด ํ์ํ์ง๋ง,
์ฅ๊ธฐ์ ์ผ๋ก๋ ํจ์จ์ ์ธ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
QueryDSL์ ์ฌ์ฉํ๋ฉด ํ์ ์์ ์ฑ์ ํ๋ณดํ๋ฉด์ ๋ณต์กํ SQL ์ฟผ๋ฆฌ๋ ๊ฐ์ฒด ์งํฅ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
๋ํ, ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ฌ์ฃผ๋ ๋ฐ ๋งค์ฐ ํจ๊ณผ์ ์ด๋ค.
์ด๋ฅผ ํตํด QueryDSL์ ์ฌ์ฉํ๋ ๊ฒ์ด ํ์ ์์ ํ ์ฟผ๋ฆฌ ์์ฑ์ ์ํ๋ ํ๋ก์ ํธ์์ ๋งค์ฐ ๋ฐ๋์งํ๋ค