Cos'è l'HQL?

HQL è un'abbreviazione per il linguaggio di query ibernazione. Hibernate è una piattaforma per connettere i database tradizionali a un linguaggio orientato agli oggetti (in particolare JAVA). È un linguaggio di query in ibernazione simile a SQL nei RDBMS tradizionali, tranne per il fatto che utilizziamo un'entità in HQL anziché le tabelle. È scritto incorporato nel codice JAVA e varie funzioni della libreria JAVA vengono utilizzate per convertire HQL in SQL. Può essere chiamato come linguaggio orientato agli oggetti in rilievo con istruzioni di query SQL. È un linguaggio flessibile e intuitivo con una propria sintassi e grammatica per recuperare, archiviare, aggiornare le informazioni dal database. Riduce la discrepanza di impedenza tra JAVA e RDBMS.

Perché abbiamo bisogno di HQL?

Poiché l'importanza di JAVA come linguaggio per piattaforme come Internet sta aumentando, riteniamo che sia più rilevante connettere la nostra applicazione basata su JAVA al back-end con l'aiuto di ibernazione. Hibernate utilizza invece il linguaggio HQL per stabilire la connessione tra database e front-end.

Abbiamo bisogno di HQL quando vogliamo selezionare alcuni campi e colonne particolari secondo i nostri requisiti. I metodi adottati in precedenza non erano abbastanza efficienti per eseguire il drill-down a questo livello, ad esempio recuperare il set di risultati o il set di dati dal database come un intero record con il numero di righe e colonne. Questo approccio non offre la flessibilità necessaria per restringere la ricerca e rende l'applicazione pesante e lenta. Questo approccio viene utilizzato da JDBC Connectors, asp.net e molte altre lingue. L'uso di HQL riduce questo intervallo di tempo e fornisce risultati specifici. Quindi è più rilevante essere utilizzato in un ambiente in tempo reale in cui JAVA è coinvolto nel front-end.

Come funziona HQL?

HQL è un formato di file XML per collegare java dal front-end al database nel back-end. Le query SQL che attiviamo direttamente nel database utilizzando le query sql possono anche essere scritte in hql. L'HQL ha una sua sintassi in cui possiamo scrivere la query e quindi quella query viene convertita in istruzioni SQL che possono essere comprese dal database. Questo è scritto in linguaggio Java per ridurre la discrepanza di impedenza.

HQL è un linguaggio senza distinzione tra maiuscole e minuscole, ad eccezione del nome di classi ed entità. Ad esempio: org.hibernate.eg.test non è uguale a org.hibernate.eg.Test poiché "test" e "Test" sono due entità diverse in HQL.

Nota: possiamo utilizzare SQL nelle query HQL direttamente utilizzando il codice nativo.

Vantaggi di HQL

Esistono diversi vantaggi di HQL come linguaggio:

  1. Il programmatore non ha alcun obbligo di apprendere il linguaggio SQL.
  2. HQL è orientato agli oggetti e le sue prestazioni sono buone quando colleghiamo la nostra applicazione front-end al back-end.
  3. HQL ha una memoria cache e quindi migliora la velocità.
  4. HQL supporta le caratteristiche popolari dei concetti di OOP come polimorfismo, ereditarietà e associazione.

Sintassi con esempi di query HQL

Alcune semplici query in letargo sembrano:

Clausola FROM:

From eg.Test or From Test.

Questa affermazione restituirà tutte le istanze della classe. In questo caso, è Test. Possiamo anche creare un alias per es .: From Test come test. Qui "test" è lo pseudonimo di Test. Questo alias può quindi essere utilizzato in un secondo momento anziché in classe.

Esempio 1

String hqlquery = "FROM Test";
Query q = session.createQuery(hqlquery);
List display = q.list();
AS Clause: From eg.Test AS T or From Test AS T.

Questa affermazione viene utilizzata quando vogliamo creare alias per le principali classi di HQL. Questa è una tecnica utile nel caso in cui abbiamo domande lunghe. Possiamo semplicemente assegnare la query all'alias e quindi utilizzare tale alias per un'ulteriore gestione dei dati. L'aliasing può essere eseguito anche senza la parola chiave AS. Ad esempio: dal test T.

Esempio n. 2

String hqlquery = "FROM Test AS T";
Query q = session.createQuery(hqlquery);
List display = q.list();
WHERE Clause: From eg.Test T WHERE T.code=102 or From Test T WHERE T.code=102.

Questa clausola viene utilizzata quando stiamo cercando un dato particolare nella tabella del database. Quindi qui se stiamo cercando un particolare record sulla base del codice di prova che abbiamo quindi questa clausola viene utilizzata nella query. Ciò contribuirà a restringere il criterio di ricerca. Se diamo la chiave primaria alla tabella nella clausola where, dovremmo vedere un miglioramento significativo nella velocità di ricerca.

Esempio n. 3

String hqlquery = "FROM Test T WHERE T.code = 102";
Query q = session.createQuery(hqlquery);
List display = q.list();
SELECT Clause:
From eg. SELECT T.number FROM Test T.

Questa clausola viene utilizzata se vogliamo selezionare una colonna particolare dalla tabella del database. Questo è uno dei modi per restringere il criterio di ricerca. Qualunque sia il nome del campo che diamo nella clausola select, sarà selezionato solo quello. È utile recuperare una piccola quantità di dati se disponiamo di informazioni specifiche sugli stessi.

Esempio n. 4

String hql = "SELECT E.firstName FROM Employee E";
Query query = session.createQuery(hql);
List results = query.list();
DELETE Clause:
String hqlexample = "DELETE FROM Test " +
"WHERE code = : test_code";

Questa clausola nella query può essere utilizzata per eliminare uno o più oggetti dalla tabella del database connessa. Entrambi gli oggetti "transitori" e "persistenti" possono essere eliminati in questo modo. Questa è la semplice query per eliminare qualsiasi numero di campi o tabelle dal database. Questo dovrebbe essere usato con attenzione.

Esempio n. 5

String hqlquery = "DELETE FROM Test " +
"WHERE code = : test_code";
Query q = session.createQuery(hqlquery);
q.setParameter("test_code", 102);
int display = q.executeUpdate();
System.out.println("Hence the number of rows modified are: " + display);

Conclusione

Quindi HQL è un elegante linguaggio orientato agli oggetti che colma il divario tra JAVA orientato agli oggetti e il sistema di gestione del database. Con la più alta quota di mercato, il linguaggio delle query di ibernazione sta diventando una lingua popolare su cui lavorare.

Articoli consigliati

Questa è una guida a HQL. Qui discutiamo perché abbiamo bisogno di HQL con i vantaggi, il funzionamento e la sintassi insieme agli esempi di query. Puoi anche dare un'occhiata ai seguenti articoli per saperne di più -

  1. Hibernate Framework
  2. Sessione di ibernazione
  3. Hibernate Interview Questions
  4. Che cos'è l'ibernazione Java?

Categoria: