Sobes.tech
Junior — Middle

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.