JPQL은 표준 SQL이 지원하는 대부분의 문법과 SQL 함수들은 지원하는데, 특정 DB에 종속적인 기능은 지원하지 않는다.
예) - 특정 데이터베이스만 지원하는 함수, 문법, SQL 쿼리 힌트 - 인라인 뷰(From 절에서 사용하는 서브쿼리), UNION, INTERSERCT - 스토어드 프로시저
때로는 특정 DB에 종속적인 기능이 필요해, JPA는 특정 DB에 종속적인 기능을 사용할 수 있는 다양한 방법을 지원한다.
CONNECT BY 처럼 특정 DB에 너무 종속적인 SQL 문법은 지원하지 않는다. -> 네이티브 SQL 사용다양한 이유로 JPQL을 사용할 수 없을 때 JPA는 SQL을 직접 사용할 수 있는 기능을 제공한다.(네이티브 SQL)
네이티브 SQL을 사용하면 엔티티를 조회할 수 있고 JPA가 지원하는 영속성 컨텍스트의 기능을 그대로 사용할 수 있다.
네이티브 쿼리 API 3가지
//결과 타입 정의public Query createNativeQuery(String sqlString, Class resultClass);//결과 타입을 정의할 수 없을 때public Query createNativeQuery(String sqlString);//결과 매핑 사용public Query createNativeQuery(String sqlString, String resultSetMapping);