[์๋ฐ ORM ํ์ค JPA ํ๋ก๊ทธ๋๋ฐ - ๊ธฐ๋ณธํธ] 12. ๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด(JPQL) ์๊ฐ
๊ฐ์ฒด์งํฅ ์ฟผ๋ฆฌ ์ธ์ด(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