JPQL
- JPA에서 제공하는 메서드 호출만으로는 섬세한 쿼리 작성이 불가능하여 이를 보완하고자 JPQL이 탄생함
- JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어 제공
- SQL과 문법 유사, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN지원
- JPQL은 엔티티 객체를 대상으로 쿼리
- SQL은 데이터베이스 테이블을 대상으로 쿼리
- 예를 들어 정리하자면 기존 JPA의 SQL은 findById(), findAll(), Delete() 등 테이블을 기준으로 기본적인 값만 사용가능했다면, JPQL은 조건문이라던지 원하는 범위를 지정해서 좀 더 세부적으로 데이터를 찾을 수 있게 할 수 있는 것이다.(검색 기능을 할때 사용하기 좋음)
간단한 예시
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.setFirstResult(5)
.setMaxResults(8)
.getResultList();
이처럼 JPQL은 객체를 대상으로 검색하는 객체 지향 쿼리이다.
- SQL을 추상화해서 특정 데이터베이스 SQL에 의존X
- JPQL을 한마디로 정의하면 객체 지향 SQL