Criteria의 가장 큰 단점은 너무 복잡하고 어렵다 때문에 코드로 작성해도, 쉽고 간결하며 그 모양도 쿼리와 비슷하게 개발할 수 있는 프로젝트인 QueryDSL을 사용하여 대처한다.
QueryDSL을 사용하려면 우선 com.mysema.query.jpa.impl.JPAQuery 객체를 생성해야 하는데 이때 엔티티 매니저를 생성자에 넘겨준다.
쿼리 타입의 기본 인스턴스를 사용하면 import static을 사용하여 간결하게 작성할 수 있다.
특정 데이터 베이스에 종속적인 기능을 지원하는 방법
네이티브 SQL을 사용하면 엔티티를 조회할 수 있고, JPA가 지원하는 영속성 컨텍스트의 기능을 그대로 사용할 수 있다.
네이티브 SQL로 SQL만 직접 사용할 뿐이지 나머지 JPQL을 사용할 때와 같다. 조회한 엔티티도 영속성 컨텍스트에서 관리된다.
JPQL처럼 네이티브 SQL도 Named 네이티브 SQL을 사용해서 정적 SQL을 작성할 수 있다.
@NamedNativeQuery 속성