Hibernate Query Language (HQL)


HQL jest obiektowym językiem zapytań, mającym wiele wspólnego z SQL-em. Podstawową różnicą jest to, że HQL jest dosłownie językiem zapytań - nie można za jego pomocą wstawiać, zmieniać ani usuwać danych - jedynie otrzymywać. Zapytania w HQL-u najczęściej wykorzystuje się w obiekcie klasy Query. Przykładowo:

Query q = session.createQuery("from User u where u.firstname = :fname");
q.setString("fname", "Max");
List result = q.list();

Powyższe zapytanie wyszukuje obiekty klasy (nie z tabeli!) User po atrybucie firstname. Po przygotowaniu zapytania ustaliliśmy zmienną fname na konkretną wartość i metodą list() poprosiliśmy o listę wyników.

HQL ma bardzo duże możliwości, pozwala na przykład: