Můžete vysvětlit hlavní rozdíly mezi standardním SQL, JPQL a HQL při práci s databázemi v Java?
Odpověď od AI
sobes.tech AI
Hlavní rozdíly mezi SQL, JPQL a HQL spočívají v úrovni abstrakce a oblasti použití:
-
SQL (Structured Query Language) — je standardní jazyk pro dotazy do relačních databází. Pracuje přímo s tabulkami a sloupci databáze. Dotazy závisí na konkrétním systému správy databází a operují s fyzickou strukturou dat.
-
JPQL (Java Persistence Query Language) — je objektově orientovaný jazyk dotazů používaný v JPA (Java Persistence API). Operuje s entitami Java a jejich poli, nikoli s tabulkami a sloupci. JPQL je nezávislý na konkrétní databázi a umožňuje psát dotazy na úrovni obchodního modelu.
-
HQL (Hibernate Query Language) — je jazyk dotazů podobný JPQL, ale specifický pro Hibernate. Také pracuje s objekty a jejich vlastnostmi, nikoli s tabulkami. HQL nabízí rozšíření specifická pro Hibernate.
Příklad dotazu:
SQL:
SELECT * FROM users WHERE age > 30;
JPQL:
SELECT u FROM User u WHERE u.age > 30
HQL je velmi podobný JPQL, ale může obsahovat dodatečné funkce specifické pro Hibernate.
Tímto způsobem umožňují JPQL a HQL pracovat s objektem modelem, zatímco SQL pracuje s fyzickou strukturou databáze.