6. JPQL

JPQL (Java Persistence Query Language)은 JPA (Java Persistence API)에서 사용하는 객체 지향 쿼리 언어입니다. JPQL은 엔티티 객체를 대상으로 쿼리를 작성하는데 사용되며, SQL과는 다른 문법과 개념을 가지고 있습니다.

JPQL은 데이터베이스 테이블이 아닌 엔티티 객체와 관련된 쿼리를 작성할 수 있습니다. 즉, 객체 지향적인 방식으로 데이터를 조회하고 조작할 수 있습니다. JPQL을 사용하면 데이터베이스 특정 SQL 문법에 종속되지 않고, 엔티티와 관계를 기반으로 쿼리를 작성할 수 있습니다.

JPQL의 문법은 다음과 같은 특징을 가지고 있습니다

1. SELECT 문

JPQL은 SELECT 문을 사용하여 엔티티 객체의 속성을 선택적으로 조회할 수 있습니다. 엔티티 객체 전체를 조회하거나 특정 속성만 선택적으로 조회할 수 있습니다.

예를 들어, "Employee" 엔티티에서 이름과 연봉을 조회하는 경우 다음과 같이 작성할 수 있습니다:

SELECT e.name, e.salary FROM Employee e

2. FROM 절

JPQL은 FROM 절을 사용하여 엔티티 객체를 조회하는 대상을 지정합니다. 엔티티 클래스의 이름이나 별칭을 사용하여 엔티티 객체를 참조할 수 있습니다.

예를 들어, "Customer" 엔티티를 조회하는 경우 다음과 같이 작성할 수 있습니다:

SELECT c FROM Customer c

3. WHERE 절

JPQL은 WHERE 절을 사용하여 엔티티 객체를 필터링할 수 있습니다. 조건식을 사용하여 원하는 조건에 맞는 엔티티 객체를 조회할 수 있습니다.

예를 들어, 나이가 30 이상인 고객을 조회하는 경우 다음과 같이 작성할 수 있습니다:

SELECT c FROM Customer c WHERE c.age >= 30

4. JOIN 절

JPQL은 JOIN 절을 사용하여 엔티티 객체 간의 관계를 활용할 수 있습니다. INNER JOIN, LEFT JOIN, FETCH JOIN 등 다양한 종류의 조인을 지원합니다.

예를 들어, "Order" 엔티티와 "Product" 엔티티의 관계를 사용하여 주문한 상품을 조회하는 경우 다음과 같이 작성할 수 있습니다:

SELECT o FROM Order o JOIN o.product p WHERE p.name = 'iPhone'

위의 예시에서는 "Order" 엔티티와 "Product" 엔티티를 JOIN하여 상품 이름이 'iPhone'인 주문을 조회합니다.

JPQL은 엔티티 객체를 대상으로 하기 때문에 SQL과는 다른 문법과 개념을 가지고 있습니다. JPQL은 데이터베이스와의 독립성을 제공하며, 객체 지향적인 방식으로 데이터를 조회하고 조작할 수 있습니다. JPA 구현체는 JPQL을 SQL로 변환하여 데이터베이스에 쿼리를 전달하고 결과를 반환합니다.

Last updated