Môžete vysvetliť hlavné rozdiely medzi štandardným SQL, JPQL a HQL pri práci s databázami v Jave?
sobes.tech AI
Odpoveď od AI
Hlavné rozdiely medzi SQL, JPQL a HQL spočívajú v úrovni abstrakcie a oblasti použitia:
-
SQL (Structured Query Language) — je štandardný jazyk pre dotazy do relačných databáz. Pracuje priamo s tabuľkami a stĺpcami databázy. Dotazy závisia od konkrétneho systému správy databáz a operujú s fyzickou štruktúrou dát.
-
JPQL (Java Persistence Query Language) — je objektovo orientovaný jazyk dotazov používaný v JPA (Java Persistence API). Operuje s entitami Java a ich poľami, nie s tabuľkami a stĺpcami. JPQL je nezávislý od konkrétnej databázy a umožňuje písanie dotazov na úrovni biznis modelu.
-
HQL (Hibernate Query Language) — je jazyk dotazov podobný JPQL, ale špecifický pre Hibernate. Taktiež pracuje s objektmi a ich vlastnosťami, nie s tabuľkami. HQL ponúka rozšírenia špecifické pre Hibernate.
Príklad dotazu:
SQL:
SELECT * FROM users WHERE age > 30;
JPQL:
SELECT u FROM User u WHERE u.age > 30
HQL je veľmi podobný JPQL, ale môže obsahovať dodatočné funkcie špecifické pre Hibernate.
Týmto spôsobom umožňujú JPQL a HQL pracovať s objektovým modelom, zatiaľ čo SQL pracuje s fyzickou štruktúrou databázy.