Spring/Spring JPA ๊ธฐ๋ณธ

[์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ] 12. ๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด(JPQL) ์†Œ๊ฐœ

hello_u 2023. 3. 4. 12:44

 

๊ฐ์ฒด์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด(JPQL) 

 

JPA ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์— 

 

๊ฒ€์ƒ‰์„ ํ• ๋•Œ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ฒ€์ƒ‰์„ ํ•œ๋‹ค. 

 

๋ชจ๋“  DB ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ DB์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋ฉด ๊ฒฐ๊ตญ ๊ฒ€์ƒ‰ ์กฐ๊ฑด์ด ํฌํ•จ๋œ SQL์ด ํ•„์š”ํ•˜๋‹ค. 

 

 

 

JPA๋Š” SQL ์„ ์ถ”์ƒํ™”ํ•œ JPQL ์ด๋ผ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์ฟผ๋ฆฌ ์–ธ์–ด๋ฅผ ์ œ๊ณตํ•œ๋‹ค. 

 

SQL๊ณผ ๋ฌธ๋ฒ•์ด ์œ ์‚ฌํ•˜๊ณ 

 

SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN ์ง€์›ํ•œ๋‹ค. 

 

SQL : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌ

 

JPQL : ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌ 

 

 

 

List<Member> result = em.createQuery("select m From Member m where m.name like '%member1'",
                Member.class)
        .getResultList();

 

ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ์—”ํ‹ฐํ‹ฐ ๊ฐ์ฒด(Member) ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์ฟผ๋ฆฌ

 

List<Member> result = em.createQuery("select m From Member m where m.age > 18",
                Member.class)
        .getResultList();

 

 

 

 

๋™์ ์ฟผ๋ฆฌ ์ž‘์„ฑํ•˜๊ธฐ 

 

 

JPQL ์€ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋™์ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต๋‹ค. 

 

๋™์ ์ฟผ๋ฆฌ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด JPQL Criteria ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

ํ•˜์ง€๋งŒ JPQL Criteria ๋Š” ๋‹จ์ ์ด ๋งŽ์•„์„œ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค . 

 

QueryDSL ์„ ์‚ฌ์šฉํ•˜์ž 

 

 

 

 

QueryDSL

    //JPQL
//select m from Member m where m.age > 18
    JPAFactoryQuery query = new JPAQueryFactory(em); QMember m = QMember.member;
    List<Member> list =
            query.selectFrom(m)
                    .where(m.age.gt(18))
                    .orderBy(m.name.desc())
                    .fetch();

 

๋ฌธ์ž๊ฐ€ ์•„๋‹Œ ์ž๋ฐ”์ฝ”๋“œ๋กœ JPQL์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

JPQL ๋นŒ๋” ์—ญํ•  

 

์ปดํŒŒ์ผ ์‹œ์ ์— ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค . 

 

๋™์ ์ฟผ๋ฆฌ ์ž‘์„ฑ์ด ํŽธ๋ฆฌํ•˜๋‹ค .

 

๋‹จ์ˆœํ•˜๊ณ  ์‰ฝ๋‹ค. 

 

์‹ค๋ฌด ์‚ฌ์šฉ์— ๊ถŒ์žฅํ•œ๋‹ค. 

 

 

https://www.inflearn.com/course/ORM-JPA-Basic/dashboard

 

์ž๋ฐ” ORM ํ‘œ์ค€ JPA ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ๊ธฐ๋ณธํŽธ - ์ธํ”„๋Ÿฐ | ๊ฐ•์˜

JPA๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๊ฑฐ๋‚˜, ์‹ค๋ฌด์—์„œ JPA๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ด๋ก ์ด ๋ถ€์กฑํ•˜์‹  ๋ถ„๋“ค์ด JPA์˜ ๊ธฐ๋ณธ ์ด๋ก ์„ ํƒ„ํƒ„ํ•˜๊ฒŒ ํ•™์Šตํ•ด์„œ ์ดˆ๋ณด์ž๋„ ์‹ค๋ฌด์—์„œ ์ž์‹ ์žˆ๊ฒŒ JPA๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., - ๊ฐ•์˜ ์†Œ๊ฐœ | ์ธํ”„๋Ÿฐ

www.inflearn.com