Co to jest HQL?

HQL to skrót od hibernowanego języka zapytań. Hibernacja to platforma do łączenia tradycyjnych baz danych z językiem obiektowym (w szczególności JAVA). Jest to język zapytań w trybie hibernacji podobny do SQL w tradycyjnym RDBMS, z tym wyjątkiem, że zamiast tabel używamy encji w HQL. Jest napisany osadzony w kodzie JAVA, a różne funkcje z biblioteki JAVA służą do konwersji HQL na SQL. Można go wywoływać jako język obiektowy z wytłoczonymi instrukcjami SQL. Jest to elastyczny i przyjazny dla użytkownika język posiadający własną składnię i gramatykę do pobierania, przechowywania i aktualizowania informacji z bazy danych. Zmniejsza niedopasowanie impedancji między JAVA i RDBMS.

Dlaczego potrzebujemy HQL?

Ponieważ znaczenie JAVA jako języka dla platform takich jak Internet rośnie, bardziej istotne jest połączenie naszej aplikacji opartej na JAVA z zapleczem za pomocą hibernacji. Hibernacja używa zamiast tego języka HQL do ustanowienia połączenia między bazą danych a interfejsem użytkownika.

Potrzebujemy HQL, gdy chcemy wybrać określone pola i kolumny zgodnie z naszymi wymaganiami. Metody przyjęte wcześniej nie były wystarczająco wydajne, aby przejść do tego poziomu, na przykład pobranie zestawu wyników lub zestawu danych z bazy danych jako całego rekordu zawierającego liczbę wierszy i kolumn. Takie podejście nie daje możliwości zawężenia wyszukiwania i sprawia, że ​​aplikacja jest ciężka i powolna. Tego podejścia używają JDBC Connectors, asp.net i wiele innych języków. Korzystanie z HQL zmniejsza tę lukę czasową i zapewnia określone wyniki. Dlatego bardziej odpowiednie jest stosowanie w środowisku czasu rzeczywistego, w którym JAVA jest zaangażowana w interfejs użytkownika.

Jak działa HQL?

HQL to format pliku XML, który łączy java z interfejsu użytkownika z bazą danych w zapleczu. Zapytania SQL, które uruchamiamy w bazie danych bezpośrednio za pomocą zapytań SQL, można również zapisywać w hql. HQL ma własną składnię, w której możemy napisać zapytanie, a następnie zapytanie to jest konwertowane na instrukcje SQL zrozumiałe dla bazy danych. Jest to napisane w języku Java, aby zmniejszyć niedopasowanie impedancji.

HQL to język bez rozróżniania wielkości liter, z wyjątkiem nazw klas i encji. Na przykład: org.hibernate.eg.test nie jest równy org.hibernate.eg.Test, ponieważ „test” i „Test” to dwie różne jednostki w HQL.

Uwaga: Możemy używać SQL w zapytaniach HQL bezpośrednio przy użyciu kodu natywnego.

Zalety HQL

Istnieje kilka zalet HQL jako języka:

  1. Koder nie ma obowiązku uczenia się języka SQL.
  2. HQL jest zorientowany obiektowo, a jego wydajność jest dobra, gdy połączymy naszą aplikację frontendową z backendem.
  3. HQL ma pamięć podręczną, a tym samym zwiększa prędkość.
  4. HQL obsługuje popularne funkcje koncepcji OOP, takie jak polimorfizm, dziedziczenie i asocjacja.

Składnia wraz z przykładami zapytań HQL

Niektóre proste zapytania w trybie hibernacji wyglądają następująco:

Z klauzuli:

From eg.Test or From Test.

Ta instrukcja zwróci wszystkie wystąpienia klasy. W tym przypadku jest to Test. Możemy również utworzyć alias dla np .: Z testu jako testu. Tutaj „test” jest aliasem testu. Ten alias może być później użyty zamiast klasy.

Przykład 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.

Ta instrukcja jest używana, gdy chcemy utworzyć aliasy do głównych klas HQL. Jest to przydatna technika w przypadku długich zapytań. Możemy po prostu przypisać zapytanie do aliasu, a następnie użyć go do dalszego przetwarzania danych. Aliasing można również wykonać bez słowa kluczowego AS. Na przykład: z testu T.

Przykład nr 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.

Ta klauzula jest używana, gdy przeszukujemy określone dane w tabeli bazy danych. Jeśli więc szukamy określonego rekordu na podstawie kodu testowego, który mamy, wówczas w zapytaniu używana jest ta klauzula. Pomoże to w zawężeniu kryterium wyszukiwania. Jeśli podamy klucz podstawowy tabeli w klauzuli where, powinniśmy zauważyć znaczną poprawę szybkości wyszukiwania.

Przykład nr 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.

Ta klauzula jest używana, jeśli chcemy wybrać konkretną kolumnę z tabeli bazy danych. Jest to jeden ze sposobów zawężenia kryterium wyszukiwania. Bez względu na to, jaką nazwę pola podamy w klauzuli select, zostanie ona wybrana. Przydatne jest pobranie niewielkiej ilości danych, jeśli mamy na ten temat określone informacje.

Przykład 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";

Tej klauzuli w zapytaniu można użyć do usunięcia jednego lub więcej obiektów z podłączonej tabeli bazy danych. Zarówno obiekty „przejściowe”, jak i „trwałe” można w ten sposób usunąć. Jest to proste zapytanie umożliwiające usunięcie dowolnej liczby pól lub tabel z bazy danych. Należy tego używać ostrożnie.

Przykład 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);

Wniosek

Stąd HQL jest eleganckim językiem obiektowym, który wypełnia lukę między obiektową JAVA a systemem zarządzania bazą danych. Przy najwyższym udziale w rynku hibernacja język zapytań staje się popularnym językiem do pracy.

Polecane artykuły

To jest przewodnik po HQL. Tutaj omawiamy, dlaczego potrzebujemy HQL z zaletami, działaniem i składnią wraz z przykładami zapytań. Możesz także zapoznać się z następującymi artykułami, aby dowiedzieć się więcej -

  1. Hibernacja Framework
  2. Sesja hibernacji
  3. Hibernacja - pytania do wywiadu
  4. Co to jest Java Hibernacja?