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.