🔙뒤로가기
JPA가 지원하는 다양한 쿼리 방법
- JPQL
- JPA Criteria
- QueryDSL
- 네이티브 SQL
- JDBC API 직접 사용, MyBatis, SpringJdbcTemplate 함께 사용
JPQL 소개
- 가장 단순한 조회방법
EntityManager.find()
- 객체 그래프 탐색
a.getB().getC()
- 하지만 복잡한 검색 조건이 필요한 경우, 예를 들어 나이가 18살 이상인 회원을 모두 검색하고 싶다면 JPQL이 필요다.
JPQL의 필요성
- JPA를 사용하면 엔티티 객체를 중심으로 개발할 수 있지만, 검색 쿼리를 작성할 때 문제가 발생할 수 있다.
- 검색을 할 때에도 테이블이 아닌 엔티티 객체를 대상으로 검색해야 한다.
- 모든 DB 데이터를 객체로 변환해서 검색하는 것은 불가능하므로, 애플리케이션에서 필요한 데이터만 DB에서 불러오려면 결국 검색 조건이 포함된 SQL이 필요하다.
JPQL이란?
- JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공한다.
- SQL과 문법이 유사하며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN 등을 지원한다.
- SQL은 데이터베이스 테이블을 대상으로 쿼리를 작성한다.
- JPQL은 엔티티 객체를 대상으로 쿼리를 작성한다.
검색 예제 코드