Sobes.tech
Middle

JPQL və HQL arasındakı fərq nədir?

sobes.tech Süni İntellekt

AI-dan cavab

JPQL (Java Persistence Query Language) — Java Persistence API (JPA) üçün standartlaşdırılmış sorğu dilidir. HQL (Hibernate Query Language) — Hibernate çərçivəsi üçün xüsusi sorğu dilidir.

Əsas fərqlər:

  • Standartlaşdırma: JPQL JPA standartının bir hissəsidir, HQL Hibernate-ə xasdır.
  • Funksiya dəstəyi: HQL Hibernate-ə xas funksiyalar və imkanlar daxil edə bilər, bunlar JPQL-də olmaya bilər (məsələn, criteria.setResultTransformer).
  • Performans: Əksər hallarda, hər iki dil SQL-ə çevrildiyi üçün performans bənzərdir. Ancaq, bəzi optimallaşdırmalar implementasiyaya xas ola bilər (Hibernate üçün HQL).
  • Keçiricilik: JPQL, müxtəlif JPA implementasiyaları arasında daha çox keçə bilər (Hibernate, EclipseLink, OpenJPA), HQL isə Hibernate-ə bağlıdır.

Hər iki dil üçün sadə sorğu nümunəsi:

// JPQL
SELECT p FROM Product p WHERE p.price > 100

// HQL
SELECT p FROM Product p WHERE p.price > 100

Sadə sorğuların sintaksisi adətən oxşardır, lakin daha mürəkkəb ssenarilərdə HQL, JPQL standartında nəzərdə tutulmayan əlavə imkanlar təklif edə bilər. Tətbiqin müxtəlif JPA təminatçıları arasında maksimum keçə bilməsi üçün JPQL istifadə etmək tövsiyə olunur.