Sobes.tech
Middle

JPQL ve HQL arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

JPQL (Java Persistence Query Language) — Java Persistence API (JPA) için standartlaştırılmış sorgu dilidir. HQL (Hibernate Query Language) — Hibernate framework'üne özgü bir sorgu dilidir.

Ana farklar:

  • Standartlaştırma: JPQL, JPA standardının bir parçasıdır, HQL Hibernate'e özgüdür.
  • Fonksiyon desteği: HQL, Hibernate'e özgü fonksiyonlar ve özellikler içerebilir; bunlar JPQL'de olmayabilir (örneğin, criteria.setResultTransformer).
  • Performans: Çoğu durumda, her iki dil de SQL'e çevrildiği için performans aynıdır. Ancak, bazı optimizasyonlar uygulamaya özgü olabilir (HQL durumunda Hibernate).
  • Taşınabilirlik: JPQL, farklı JPA uygulamaları arasında daha taşınabilirdir (Hibernate, EclipseLink, OpenJPA), HQL ise Hibernate'e bağlıdır.

Her iki dilde basit bir sorgu örneği:

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

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

Basit sorgu sözdizimi genellikle aynıdır, ancak daha karmaşık senaryolarda HQL, JPQL standardında bulunmayan ek özellikler sunabilir. Uygulamanın farklı JPA sağlayıcıları arasında maksimum taşınabilirliğini sağlamak için JPQL kullanılması önerilir.