- JPA를 사용하면 엔티티 객체를 중심으로 개발할 수 있다.
- 조인을 통한 검색 쿼리에서도 테이블이 아닌 엔티티 객체를 대상으로 검색한다.
- JPQL
- SQL을 추상화한 객체 지향 쿼리 언어이기 때문에 특정 데이터베이스에 의존하지 않는다.
JPQL
은 엔티티 객체 대상 쿼리,SQL
은 데이터베이스 테이블 대상 쿼리- 검색할 때 테이블이 아닌 엔티티 객체를 대상으로 검색할 수 있는 문법을 지원한다.
//전체 조회
List<Member> result = em.createQuery("select m from Member as m", Member.class).getResultList();
/*
select m from Member as m
↓
select
member0_.id as id1_0_,
member0_.name as name2_0_
from
MEMBER member0_
*/
- 작성한 쿼리를 JPA가 새로운 쿼리로 만들어낸다.
List<Member> result = em.createQuery("select m from Member as m", Member.class)
.setFirstResult(5)
.setMaxResults(8)
.getResultList();
/*
select
member0_.id as id1_0_,
member0_.name as name2_0_
from
MEMBER member0_ limit ? offset ?
*/
- ANSI SQL이 지원하는 대부분의 쿼리를 지원하기 때문에 데이터베이스 방언에 맞춘 페이징 쿼리가 만들어진다.