Middle
Mis vahe on JPQL ja HQL?
sobes.tech AI
Vastus AI-lt
JPQL (Java Persistence Query Language) — standardiseeritud päringukeel Java Persistence API (JPA) jaoks. HQL (Hibernate Query Language) — spetsiifiline päringukeel Hibernate raamistikule.
Peamised erinevused:
- Standardiseerimine: JPQL on osa JPA standardist, HQL on spetsiifiline Hibernate jaoks.
- Funktsioonide tugi: HQL võib sisaldada Hibernate-spetsiifilisi funktsioone ja võimalusi, mis võivad puududa JPQL-st (näiteks
criteria.setResultTransformer). - Jõudlus: Enamasti on jõudlus sarnane, kuna mõlemad keeled tõlgitakse SQL-ks. Kuid mõned optimeerimised võivad olla spetsiifilised rakendusele (Hibernate HQL puhul).
- Ülekantavus: JPQL on rohkem ülekantav erinevate JPA rakenduste vahel (Hibernate, EclipseLink, OpenJPA), samas kui HQL on seotud Hibernate'iga.
Näide lihtsast päringust mõlemas keeles:
// JPQL
SELECT p FROM Product p WHERE p.price > 100
// HQL
SELECT p FROM Product p WHERE p.price > 100
Kuigi lihtsate päringute süntaks on sageli sarnane, keerulisemates stsenaariumides võib HQL pakkuda täiendavaid võimalusi, mis ei ole standardi JPQL-s ette nähtud. Soovitatav on kasutada JPQL-i, et tagada maksimaalne rakenduse ülekantavus erinevate JPA pakkujate vahel.