JPA(Java Persistence API)를 사용하여 서비스를 구현하다 보면 JPA의 Query Methods만으로는 조회가 불가능한 경우가 발생
N+1문제 중요!!
JPQL은 SQL을 추상화 하여 사용하기 때문에 JPQL문은 데이터 베이스가 변경 되어도 애플리케이션에 영향을 받지 않는다.
DB테이블이 아닌 entity를 대상으로 쿼리를 작성한다
(자동생성 - Query Method, JPA Criteria, Querydsl)
수동 생성: 엔티티 매니저 em.createQuery(), @Query
@Query는 SpringData에서 제공.

사용 방법
주로 2번 사용함.