Wat is HQL?

HQL is een afkorting voor de slaapstand van de slaapstand. Hibernate is een platform om de traditionele databases te verbinden met objectgeoriënteerde taal (specifiek JAVA). Het is een querytaal in de slaapstand die vergelijkbaar is met SQL in traditionele RDBMS, behalve dat we een entiteit in HQL gebruiken in plaats van tabellen. Het is geschreven ingebed in JAVA-code en verschillende functies uit de JAVA-bibliotheek worden gebruikt om HQL naar SQL te converteren. Het kan worden genoemd als een objectgeoriënteerde taal met SQL-queryinstructies. Het is een flexibele en gebruiksvriendelijke taal met zijn eigen syntaxis en grammatica voor het ophalen, opslaan en bijwerken van informatie uit de database. Het vermindert de impedantie-mismatch tussen JAVA en RDBMS.

Waarom hebben we HQL nodig?

Naarmate het belang van JAVA als een taal voor platforms zoals internet toeneemt, vinden we het relevanter om onze op JAVA gebaseerde applicatie met back-end te verbinden met behulp van de slaapstand. Hibernate gebruikt in plaats daarvan de HQL-taal om de verbinding tussen database en front-end tot stand te brengen.

We hebben HQL nodig als we een aantal specifieke velden en kolommen willen selecteren volgens onze vereisten. Eerder aangenomen methoden waren niet efficiënt genoeg om naar dit niveau te boren, bijvoorbeeld het ophalen van de resultatenset of dataset uit de database als een geheel record met het aantal rijen en kolommen. Deze aanpak biedt niet de flexibiliteit om de zoekopdracht te beperken en maakt de toepassing zwaar en traag. Deze aanpak wordt gebruikt door JDBC Connectors, asp.net en nog veel meer talen. Het gebruik van HQL vermindert dit tijdsverschil en biedt specifieke resultaten. Het is daarom relevanter om te worden gebruikt in een realtime omgeving waar JAVA bij de front-end betrokken is.

Hoe HQL werkt?

HQL is een XML-bestandsindeling om Java vanaf de voorkant te koppelen aan de database in de achterkant. De SQL-query's die we rechtstreeks in de database activeren met behulp van sql-query's, kunnen ook in hql worden geschreven. De HQL heeft zijn eigen syntaxis waar we de query kunnen schrijven en die query wordt vervolgens omgezet in SQL-instructies die door de database kunnen worden begrepen. Dit is geschreven in Java-taal om het verschil in impedantie te verminderen.

HQL is een niet-hoofdlettergevoelige taal, behalve de naam van klassen en entiteiten. Bijvoorbeeld: org.hibernate.eg.test is niet gelijk aan org.hibernate.eg.Test omdat de "test" en "Test" twee verschillende entiteiten zijn in HQL.

Opmerking: we kunnen SQL in HQL-query's rechtstreeks gebruiken met de native code.

Voordelen van HQL

Er zijn verschillende voordelen van HQL als taal:

  1. De coder is niet verplicht om de SQL-taal te leren.
  2. HQL is objectgeoriënteerd en de prestaties zijn goed wanneer we onze front-end-applicatie koppelen aan de backend.
  3. HQL heeft cachegeheugen en verbetert daarmee de snelheid.
  4. HQL ondersteunt populaire functies van OOP's concepten zoals polymorfisme, overerving en associatie.

Syntaxis samen met HQL-queryvoorbeelden

Enkele eenvoudige zoekopdrachten in de slaapstand zien er als volgt uit:

VAN clausule:

From eg.Test or From Test.

Deze verklaring retourneert alle instanties van de klasse. In dit geval is het Test. We kunnen ook een alias maken voor bijvoorbeeld: Van test als test. Hier is "test" het alias van Test. Deze alias kan vervolgens later worden gebruikt in plaats van klasse.

Voorbeeld 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.

Deze verklaring wordt gebruikt wanneer we aliassen voor de hoofdklassen van HQL willen maken. Dit is een handige techniek voor het geval we lange vragen hebben. We kunnen de query eenvoudig aan de alias toewijzen en die alias vervolgens gebruiken voor verdere gegevensverwerking. Aliasing kan ook worden gedaan zonder het AS-sleutelwoord. Voor bijvoorbeeld: van test T.

Voorbeeld 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.

Deze clausule wordt gebruikt wanneer we naar bepaalde gegevens in de databasetabel zoeken. Dus hier als we op zoek zijn naar een bepaald record op basis van de testcode die we hebben, wordt deze clausule in de query gebruikt. Dit zal helpen bij het beperken van het zoekcriterium. Als we primaire sleutel f de tabel geven in waar clausule, dan zouden we de aanzienlijke verbetering van de zoeksnelheid moeten zien.

Voorbeeld 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.

Deze clausule wordt gebruikt als we een bepaalde kolom uit de databasetabel willen selecteren. Dit is een van de manieren om het zoekcriterium te beperken. Welke veldnaam we ook geven in de select-clausule die alleen wordt geselecteerd. Het is handig om een ​​kleine hoeveelheid gegevens op te halen als we specifieke informatie hierover hebben.

Voorbeeld 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";

Deze clausule in de query kan worden gebruikt om een ​​of meer objecten uit de verbonden databasetabel te verwijderen. Zowel de "tijdelijke" als de "permanente" objecten kunnen op deze manier worden verwijderd. Dit is de eenvoudige vraag om een ​​willekeurig aantal velden of tabellen helemaal uit de database te verwijderen. Dit moet voorzichtig worden gebruikt.

Voorbeeld 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);

Conclusie

Daarom is HQL een elegante objectgeoriënteerde taal die de kloof overbrugt tussen objectgeoriënteerd JAVA en databasebeheersysteem. Met het hoogste marktaandeel wordt de winterslaaptaal een populaire taal om aan te werken.

Aanbevolen artikelen

Dit is een gids voor HQL. Hier bespreken we waarom we HQL met de voordelen, werking en syntaxis nodig hebben, samen met voorbeelden van zoekopdrachten. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Hibernate Framework
  2. Slaapstand
  3. Vragen tijdens solliciteren bij Hibernate
  4. Wat is Java Hibernate?