SpringBoot/JPA
JPQL
NellKiM
2025. 2. 3. 10:45
JPQL (Java Persistence Query Language)**는 **JPA (Java Persistence API)에서 사용되는 쿼리 언어 객체 지향 프로그래밍 환경에서 데이터베이스에 접근하기 위해 사용되며, SQL과 유사하지만 엔티티(Entity)와 필드를 대상으로 쿼리를 작성하는 것이 특징
JPQL 특징
- 객체 중심 쿼리 언어: JPQL은 SQL처럼 테이블과 컬럼을 대상으로 하지 않고 엔티티와 필드를 대상으로 쿼리
- 데이터베이스 독립적: 특정 DBMS에 종속되지 않음
- 표준 JPA 쿼리 방식: JPA가 지원하는 모든 데이터베이스에서 사용 가능
JPQL 예제
기본 JPQL
java
복사편집
// 모든 고객 정보 조회 String jpql = "SELECT c FROM CustomerEntity c"; TypedQuery<CustomerEntity> query = entityManager.createQuery(jpql, CustomerEntity.class); List<CustomerEntity> customers = query.getResultList();
위 쿼리에서:
- CustomerEntity는 JPA 엔티티 클래스
- c는 엔티티의 별칭(alias)
- SELECT c는 CustomerEntity 객체를 가져옴
조건절 추가
java
복사편집
String jpql = "SELECT c FROM CustomerEntity c WHERE c.name = :name"; TypedQuery<CustomerEntity> query = entityManager.createQuery(jpql, CustomerEntity.class); query.setParameter("name", "Alice"); CustomerEntity customer = query.getSingleResult();
JPQL과 SQL 비교
특징JPQLSQL
대상 | 엔티티 | 테이블 |
필드 참조 | 엔티티 필드 | 컬럼 이름 |
표준화 | JPA 표준 | DB 종속적 |
사용 목적 | 객체 데이터 관리 | DB 데이터 관리 |
JPQL 장점
- 데이터베이스 독립성: 데이터베이스 변경에 영향을 덜 받음
- 객체 지향 쿼리: 엔티티 객체를 기반으로 쿼리 작성
- 코드 가독성: 엔티티 기반으로 이해하기 쉬운 쿼리 작성
정리
JPQL은 JPA의 핵심 기능 중 하나로, 객체 지향 프로그래밍과 관계형 데이터베이스 사이의 간극을 줄여줍니다. SQL과 비슷한 구문을 사용하면서도 객체를 직접 다룰 수 있다는 점에서 효율적입니다. JPA 기반 프로젝트에서는 필수적으로 알아야 하는 기술입니다.