JPQL
🧩 JPQL
정의
JPQL은 Java Persistence Query Language의 약어로, JPA에서 엔티티와 속성을 기준으로 작성하는 객체 지향 쿼리 언어이다. 테이블이 아니라 엔티티 모델을 기준으로 조회한다.
SQL과 비슷하지만 객체 중심으로 동작한다.
🧩 역할
- 엔티티를 기준으로 조회 쿼리를 작성한다
- DB 벤더에 덜 종속적인 쿼리를 작성한다
- JPA 표준 쿼리 언어로 동작한다
- 객체 모델과 SQL 사이의 간극을 줄인다
🛠 특징
- 테이블 이름이 아니라 엔티티 이름을 사용한다
- 엔티티의 속성을 기준으로 조건을 작성한다
- 특정 DB 문법에 덜 종속적이다
- 쿼리 결과를 엔티티 객체로 받을 수 있다
🛠 사용 예시
String jpql = "SELECT p FROM Product p WHERE p.status = 'ACTIVE'";
List<Product> result = entityManager
.createQuery(jpql, Product.class)
.getResultList();
@Query와 함께 사용
@Query("SELECT u FROM User u WHERE u.status = 'ACTIVE'")
List<User> findActiveUsers();
⚠️ 주의사항
- JPQL은 엔티티명과 엔티티 필드를 기준으로 작성해야 한다.
- 테이블명이나 컬럼명을 직접 쓰면 안 된다.
- 문자열 기반 쿼리라서 오타는 컴파일 시점에 잡히지 않는다.
- 동적 조건이 많으면 Querydsl이 더 적합할 수 있다.
📌 정리
JPQL은 JPA의 객체 지향 쿼리 언어다.- 엔티티와 속성을 기준으로 작성한다.
- JPA 표준 쿼리로서
@Query,EntityManager와 자주 함께 사용한다.
댓글남기기