✔ 정리
- JPQL은 SQL을 추상화해서 특정 DB 기술에 의존하지 않는다.
- Criteria나 QueryDSL은 JPQL을 만들어주는 빌더 역할을 할 뿐이므로 핵심은 JPQL을 잘 알아야 한다.
- Criteria나 QueryDSL을 사용하면 동적으로 변하는 쿼리를 편리하게 작성할 수 있다.
- Criteria는 JPA가 공식 지원하는 기능이지만 직관적이지 않고 사용하기에 불편하다.
반면 QueryDSL은 JPA가 공식 지원하는 기능은 아니지만 직관적이고 편리하다.
- JPA도 네이티브 SQL을 제공하므로 직접 SQL을 사용할 수 있다.
하지만 DB에 종속적인 SQL을 사용하면 다른 DB로 변경하기 쉽지 않다.
따라서 최대한 JPQL을 사용하고 그래도 방법이 없을 때 네이티브 SQL을 사용하자.
- JPQL은 대량의 데이터를 수정하거나 삭제하는 벌크 연산을 지원한다.