🧩 JPQL

정의

JPQLJava 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와 자주 함께 사용한다.

연결문서

태그: ,

카테고리:

업데이트:

댓글남기기