Java Persistence Query Language

JPQL은 JPA에서 사용하는 객체 지향 쿼리 언어이다.

대표적인 객체 지향 쿼리

- JPQL:엔티티 객체를 조회하는 객체지향 쿼리이다.
- Criteria:JPQL을 편하게 작성하도록 도와주는 빌더 클래스를 제공한다.
- QueryDSL:JPQL을 보완하기 위해 등장한 비표준 오픈 소스 프레임워크이다.
- 네이티브 SQL:JPA에서 SQL을 직접 사용할 수 있다.

JPA를 이용해서 객체 중심으로 개발 하다 보면 검색을 할 때도 테이블이 아닌 엔티티 객체를 대상으로 검색을 해야한다. 일반 SQL 쿼리를 사용해서 검색 조건을 지정하여 질의 하듯이 하려면 , 결국 JPQL에서 좀 더 정밀한 질의 조건을 추가 할 수 있어야 한다.결국, JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 필요로 하게 된다.

특징

SQL과 문법이 유사하고, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN등을 지원한다.

JPQL은 엔티티 객체를 대상으로 쿼리를 질의하고 ,SQL은 데이터베이스 테이블을 대상으로 쿼리를 질의한다.

SQL을 추상화해서 특정 데이터 베이스 SQL에 의존하지 않는다.

기본 문법

select 별칭 from  엔티티 이름(Member) as 별칭

select m from Member as m

별칭은 기본이다. 예를 들어 Member의 별칭 m으로 지정할 수 있다.

엔티티와 속성은 대소문자를 구분 한다. Member 와 member, userid와 userId를 구분한다.

JPQL 키워드는 대소문자 구분 안한다. SELECT, FROM, where 등은 대소문자를 구분하지 않으며 from절에는 객체가 들어간다.

select m from Member m where m.age > 0