Java Hibernate Tutorial

Nachdem ich mit SQLite das Java-Fass aufgemacht hab, gibts nun noch Hibernate hinterher. Hibernate ist wohl eines der bekanntesten ORM-Frameworks. Ich zeige das ganze anhand von Netbeans, aber auch hier sollte Eclipse nicht weit entfernt sein. Es wird frech davon ausgegangen, dass das Java-Plugin installiert ist.

1) Hibernate Plugin installieren

In Netbeans unter Tools -> Plugins -> Availible Plugins -> Hibernate. Sollte schmerzfrei durchlaufen.

2) Java Projekt anlegen

File -> New Projekt -> Java Application. Darf auch eine DesktopApplication sein, wenn ihr den GUI-Builder (Swing) als Plugin mitinstalliert habt – tut aber für Hibernate nichts zur Sache. Die Standardeinstellungen tun es unter Netbeans für das neue Projekt.

3) Zu einer Datenbank verbinden

Datenbankverbindung

Datenbankverbindung

Wenn unter Services -> Databases bereits die gewünschte Datenbank angelegt wurde, einfach zu dieser connecten. Falls nicht: Rechtsklick auf Databases, New Connection und dann da die erforderlichen Parameter auswählen. Ich habe es leider erfolglos mit einer SQLite-Datenbank versucht, weil Netbeans einen (definitiv gesetzten!) Primary Key vermisst. Also verwende ich eine MySQL Datenbank. Sollte dann so ungefähr aussehen wie auf dem Bild.

4) Hibernate Config File

Hibernate Config

Hibernate Config

Unter dem Reiter Projects auf das gerade angelegte Projekt per Rechtsklick New -> Other und dann da Hibernate -> Hibernate Configuration Wizard. Im Schritt „Select Data Source“ ist dann die Datenbank aus Schritt 3 auszuwählen. Die frisch erstellte hibernate.cfg.xml (oder wie sie auch benannt ist) öffnen und oben in den Reiter „XML“ wechseln. Da sind dann die 2 Zeilen

<property name="hibernate.show_sql">true</property> <property name="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</property> 

so hinzuzufügen, dass es in etwa wie auf dem Bild rechts ausschaut.

5) HibernateUtil File

Jetzt zum Projekt ein neues „HibernateUtil“-File hinzufügen. Unter Package empfiehlt sich [projektname].util. File ist nach belieben zu benennen. Dieses File ist für die Initialisierung der Session-Verwaltung zuständig und muss nicht angefasst werden.

6) Hibernate Reverse Engineering Wizard

Reverse Engineering

Reverse Engineering

Nach Schema F ist jetzt ein Hibernate Reverse Engineering Wizard zum Projekt hinzuzufügen. Jetzt wirds interessant. Im Schritt „Database Tables“ kann ausgewählt werden, für welche Tabellen der Datenbank Hibernate aktiviert werden soll. Im Zweifelsfalle erstmal eine Tabelle zum testen reinpacken, mehr kann man später immernoch dazunehmen.

7) Hibernate Mapping files and POJOs

Mapping

Mapping

Und nochmal wird der File-Wizard bemüht. Diesmal wählen wir Hibernate Mapping files and POJOs from Database. Unter „General Settings“ keinen Haken anwählen, dafür beide Haken bei „Code Generation Settings“ wählen. Als Package kann man projektname.entity wählen. Sollte in etwa so wie auf dem Bild ausschauen. Für jede Tabelle die ihr in Schritt 6) gewählt habt, wird nun automatisch unter projektname.entity eine Tabellenname.java sowie eine Tabellenname.hbm.xml Datei erstellt. Erstere ist die Klasse selbst, mit der ihr dann per Hibernate für diese Tabelle operiert, die zweite ist eine XML-Definition der Felder, die angesteuert werden sollen.

Sollte man sich jetzt entscheiden, doch noch mehrere Tabellen (Schritt 6) dazuzunehmen: Bestehendes projektname.entity entfernen und ein neues anlegen.

8) Mit der Hibernate Query Language vertraut machen

Rechtsklick auf das Hibernate Configfile (hibernate.cfg.xml oder wie auch immer) und „Run HQL Query“. Hier können nach Herzenslust Datenbankabfragen probiert werden. Versuchts mal mit

from Tabellenname 

Dabei wichtig: Tabellenname unbedingt mit großem Erstbuchstabe, auch wenn die Tabelle eigentlich kleingeschrieben ist. Zum Abschicken der Query auf den grünen Pfeil klicken. Sollte euch die Query um die Ohren fliegen (viel roter Text -> Exceptions), sollte geprüft werden ob die Datenbank noch korrekt verbunden ist. Also: Services -> jdbc:mysql://localhost:3306/datenbank und dann Rechtsklick auf den Datenbankname mit „Set as Default Catalog“ (vergleiche Bild unten).

Datenbankauswahl

Datenbankauswahl


Wer HQL näher kennenlernen möchte, darf sich hier umsehen.

9) Ausprobieren!

Genug der grauen Theorie, jetzt gehts an den Code.

package db1;  import java.util.List; import org.hibernate.*; import db1.util.HibernateUtil; import db1.entity.*; 

Natürlich entsprechend eures Projektnames anzupassen.

        try         {             Session session = HibernateUtil.getSessionFactory().openSession();             session.beginTransaction();             List result = session.createQuery("from Pizzas").list();             session.getTransaction().commit();              for(Object o : result)             {                 Pizzas p = (Pizzas)o;                 System.out.println(p.getPizzaname() + " für " + p.getPrice() + "€");             }              session = HibernateUtil.getSessionFactory().openSession();             session.beginTransaction();             Pizzas saveP = new Pizzas();             saveP.setPizzaname("Chef");             saveP.setPrice(10.43);             session.save(saveP);             session.getTransaction().commit();         }         catch (Exception ex)         {             ex.printStackTrace();         } 

Da brauch ich jetzt nicht mehr viel zu sagen oder? Mit sauberen SQL Transactions werden erst Datensätze ausgegeben und dann ein neuer angelegt – auf feinste ORM Art. Jetzt zum krönenden Abschluss noch ein Screenshot von der ganzen IDE wies bei mir ausschaut.

Endergebnis

Endergebnis


Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0