JPQL이란?
- JPQL(Java Persistence Query Language)은 JPA(Java Persistence API)에서 사용되는 객체 지향적인 쿼리 언어
- JPQL은 엔티티 객체를 대상으로 쿼리를 작성하고 실행할 수 있으며,
- SQL과 유사하지만 데이터베이스 특정 기능에 의존하지 않는다는 특징이 있음.
JPQL 특징
- 객체 지향 쿼리 언어: JPQL은 엔티티 객체를 대상으로 쿼리를 작성. 따라서 데이터베이스의 테이블이 아닌 엔티티 클래스와 그 안에 정의된 필드와 관계를 사용하여 쿼리를 작성.
- 포괄적인 쿼리 기능: JPQL은 다양한 쿼리 기능을 제공. 예를 들어, SELECT, INSERT, UPDATE, DELETE와 같은 다양한 유형의 쿼리를 작성할 수 있음.
- 엔티티와 필드 사용: JPQL은 엔티티와 엔티티의 필드를 사용하여 쿼리를 작성. 엔티티와 필드는 엔티티 클래스와 그 안에 정의된 필드를 나타냄.
- 관계 지원: JPQL은 엔티티 간의 관계를 사용하여 쿼리를 작성할 수 있음. 이를 통해 엔티티 간의 조인이나 관계를 활용한 필터링이 가능.
- 타입 안전성: JPQL은 컴파일 시점에 타입 안전성을 제공. 즉, 올바르지 않은 쿼리를 작성할 경우 컴파일 오류가 발생하여 빠르게 오류를 발견할 수 있음. (단 별도의 도구를 설치해야함)
- 데이터베이스에 독립적: JPQL은 데이터베이스에 독립적. 즉, 다양한 데이터베이스를 지원하며, 데이터베이스의 특정 SQL 문법에 의존하지 않음.
- 쿼리 최적화: JPQL을 사용하면 JPA 구현체가 쿼리를 데이터베이스에 맞게 최적화 가능. 이를 통해 다양한 데이터베이스에 대해 최적의 성능을 얻을 수 있음.
JPQL은 JPA의 핵심 기능 중 하나로, 객체 지향적인 쿼리 작성을 통해 데이터베이스와의 상호 작용을 추상화하고 편리하게 수행할 수 있도록 도와줌.
JPQL의 한계
- JPQL은 일반적으로 컴파일 시점에 쿼리에 문제가 발생했는지 알 수 없음.
- JPQL은 문자열로 작성되며, 이 문자열은 컴파일러가 실제 실행되기 전까지는 일반적으로 검사되지 않음.
- IDE나 라이브러리를 통해 JPQL 쿼리를 정적으로 분석하여 컴파일 시점에 오류를 검출하는 도구들이 있긴함.
- 이는 JPQL 쿼리에 오타가 있거나 잘못된 문법이 사용되었을 경우에도 컴파일러가 오류를 감지하지 못하는 이유.
- 따라서 JPQL을 사용할 때는 런타임 시점에 쿼리에 오류가 발생하는지 확인해야 함.
- 이를 통해 올바른 쿼리를 작성하고 실행할 수 있음.
'Spring > JPA' 카테고리의 다른 글
성능 향상을 위한 1차 캐시와 2차 캐시 (0) | 2023.12.31 |
---|---|
JPA 비관적 락 (1) | 2023.12.08 |
JPA 낙관적 락 (1) | 2023.12.07 |
영속성 컨텍스트란? (0) | 2023.12.03 |
JPA 란? (1) | 2023.12.02 |