Sobes.tech
Junior — Middle

Java'da veritabanlarıyla çalışırken standart SQL, JPQL ve HQL arasındaki temel farkları açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

SQL, JPQL ve HQL arasındaki temel farklar, soyutlama seviyesi ve kullanım alanında yatar:

  • SQL (Structured Query Language) — ilişkisel veritabanlarına sorgu yapmak için kullanılan standart dildir. Doğrudan veritabanındaki tablolar ve sütunlar ile çalışır. Sorgular, belirli veritabanı yönetim sistemine bağlıdır ve fiziksel veri yapısı ile işlem yapar.

  • JPQL (Java Persistence Query Language) — nesne yönelimli bir sorgu dilidir ve JPA (Java Persistence API) içinde kullanılır. Java varlıkları ve alanları ile işlem yapar, tablolar ve sütunlar ile değil. JPQL, belirli bir veritabanından bağımsızdır ve iş modeli seviyesinde sorgular yazmaya olanak tanır.

  • HQL (Hibernate Query Language) — JPQL'ye benzeyen, ancak Hibernate'e özgü bir sorgu dilidir. Ayrıca nesneler ve özellikleri ile çalışır, tablolar ile değil. HQL, Hibernate'e özgü genişletmeler sağlar.

Örnek sorgu:

SQL:

SELECT * FROM users WHERE age > 30;

JPQL:

SELECT u FROM User u WHERE u.age > 30

HQL, JPQL'ye çok benzese de, Hibernate'e özgü ek özellikler içerebilir.

Bu şekilde, JPQL ve HQL nesne modeline uygun çalışırken, SQL veritabanının fiziksel yapısı ile çalışır.