Hibernate Abfragemöglichkeiten
Bei Hibernate (Version 3) gibt es verschiedene Möglichkeiten um Abfragen an die Datenbank zu stellen. Ich möchte hier einige vorstellen. Die erste Möglichkeit ist die hauseigenen Abfragesprache HQL:
Session session = ...;
Query query = session.createQuery("from User where name = :name").setParameter("name", "mike");
Iterator it = query.iterate();
...
Dies fragt alle Nutzer (Klasse User) mit dem Namen “mike” ab. Wichtig zu erwähnen bei einem Query ist der Befehel “uniqueResult”. Wenn nur ein Objekt erwartet wird bzw. nur eine Zeile, so kann man sich damit viel Arbeit ersparen.
Die zweite Möglichkeit für die Datenabfrage ist die Verfassung eigener SQL-Statements. Dies funktioniert ähnlich wie mit HQL nur statt createQuery ruft man createSQLQuery auf. Die letzte und wohl interessanteste Möglichkeit sind die neuen Criteria Querys. Dies ist eine Abfrage-API, welches es ermöglicht über Java-Objekte sich seine Abfrage zusammen zu stellen.
...
Criteria crit = session.createCriteria(User.class);
crit.setMaxResults(50);
List userss = crit.list();
...
Dies würde z.B. die ersten 50 Nutzer abfragen. Durch den Aufruf von “list” baut Hibernate das entsprechende SQL-Statment zusammen und gibt das Ergebnis als Liste zurück.
Wenn man sich die API vom Session-Objekt anschaut fällt einem auch noch der Befehl “createFilter” auf. Damit ist es möglich vorhandene Collections, also irgendwelche Listen von Objekten wie z.B. eine Liste von Rechnungen zu einem Kunden zu filtern.