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:
- Koder nie ma obowiązku uczenia się języka SQL.
- HQL jest zorientowany obiektowo, a jego wydajność jest dobra, gdy połączymy naszą aplikację frontendową z backendem.
- HQL ma pamięć podręczną, a tym samym zwiększa prędkość.
- 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 -
- Hibernacja Framework
- Sesja hibernacji
- Hibernacja - pytania do wywiadu
- Co to jest Java Hibernacja?