JPQL은 Java Persistence Query Language로, 엔티티 객체 대상의 쿼리 언어다.
JPA를 사용할 때 개발자는 엔티티 객체 중심으로 코드를 짠다. 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색을 해야 하는데, DB의 모든 데이터를 엔티티로 불러 와서 검색을 하는 것은 불가능하다.
그렇기에 SQL문을 직접 작성하게 되는데, JPA에서는 JPQL이라는 SQL을 추상화한 쿼리 언어를 사용한다.
JPQL로 엔티티 중심의 쿼리를 작성하면 JPA가 이를 분석하여 SQL을 작성하여 DB에서 검색을 할 수 있게 되는 것이다.
TypedQuery<Member> query = em.createQuery("select m from Member m", Member.class);
List<Member> members = query.getResultList();
EntityManager의 createQuery 메소드를 호출하여 query 객체를 생성한 후 getResultList() 메소드를 호출하면 된다.
이 때 작성된 JPQL은
select m from Member m
아래와 같은 SQL문으로 변환된다.
SELECT M.ID, M.NAME, M.AGE FROM MEMBER M