Das wären die Grundlagen der Persistenz. Außer natürlich die EntityManagerFactory, deren Existenz einfach als gegeben angenommen wurde. Aber darauf kommt es schließlich an. Hier ein typischer Aufruf, um sie zu erzeugen:
Man fordert einfach die Persistenz-Schicht auf, eine Factory mit dem Namen „example“ zu erstellen. Die hierzu verwendeten Konfigurationsinformationen stammen aus einer Datei namens persistence.xml, welche im Verzeichnis META-INF des Source-Baumes gespeichert sein sollte. Sie definierte eine benannte „persistence-unit“, welche Details darüber enthält, wie Persistenz verwaltet werden sollte, welcher zugrunde liegende Persistence Provider die Aufgabe übernimmt und welche Datenbank verwendet wird. Hier ein Codeschnipsel:
Hier gibt es eine persistence-unit namens „example“, welches der Name ist, der der Methode createEntityManagerFactory()übergeben wurde. An diesem Punkt kommt die Kombination Hibernate Annotations/EntityManager zum Einsatz, daher verweist das <provider>-Element auf den HibernatePersistence-Provider. Es kann ein oder mehrere <class>-Elemente geben, von denen jedes auf eine Klasse verweist, welche persistent gemacht werden soll. In diesem Beispiel gibt es Klassen-Elementen für die Person und für die Adresse. Es gibt auch ein <properties>-Element, welches <property>-Elemente zum Setzen implementierungsspezifischer Werte enthält, die der erzeugten EntityManagerFactory übergeben werden können. In diesem Beispiel werden Hibernate und HSQLDB eingebettet verwendet. Außerdem muss der JDBC-Treiber so eingerichtet werden, dass er eine URL zur Verbindung mit der Datenbank verwendet, und Hibernate muss wissen, welcher Dialekt von SQL verwendet werden soll:
Die eingebettete HSQLDB startet mit dem Benutzernamen „sa“ und einem leeren Passwort. Außerdem soll begrenzt werden, bis zu welcher Tiefe Hibernate entsprechende Objekte abruft.
Und schließlich wird noch die Eigenschaft hbm2ddl.auto gesetzt. Diese steuert die Fähigkeit von Hibernate, die erforderlichen Tabellen in der SQL-Datenbank dynamisch zu erstellen. Wenn sie auf „create“ gesetzt ist, wird die Datenbank bei jedem Aufruf gelöscht und die Tabellen werden neu erzeugt. Wenn sie auf „update“ gesetzt ist, wird versucht, die vorhandenen Tabellen so zu modifizieren, dass sie für die aktuellen Versionen der Entities geeignet sind:
Das Erzeugen der DDL, um die Datenbank zu erstellen, sollte mit den meisten Implementierungen möglich sein, aber der Schalter hierfür ist je nach Implementierung unterschiedlich.
Wenn diese XML-Datei erstellt ist, liegen alle Informationen vor, so dass createEntityManagerFactory die einfache Datenbank erstellen kann. Diese Datei (persistence.xml) sowie der Beispielcode finden sich im Quellcode zu diesem Artikel. Um ihn ausführen zu können, braucht man allerdings die entsprechenden Bibliotheken. Da wären einmal die HSQLDB-Datenbank, Hibernate, Hibernate-Annotations und Hibernate-EntityManager von der Hibernate-Website. Die readme-Datei, welche beim Quellcode enthalten ist, führt auf, welche Bibliotheken man benötigt und wo man sie bekommt. Sobald das Beispiel läuft, kann man damit experimentieren und selbst eine einfache persistente Entity erstellen. Wenn man wissen will, was als SQL ausgeführt wird, kann man den Eigenschaften in der Datei persistence.xml einfach folgende Codezeile hinzufügen:
Hibernate wird dann auch jede SQL-Anweisung ausgeben, die es unter der Haube ausführt. Damit sind die Grundlagen für Persistenz sowie einige einfache Mappings vorhanden. Den Source Code für dieses Tutorial gibt es auch als Download.
Ressourcen
Hierzulande liegt das Wachstum im dritten Quartal gegenüber dem Vorjahreszeitraum bei 78 Prozent. In Österreich…
Die Datenschützer kritisieren die Nutzung von Kundendaten für gezielte Werbung auf LinkedIn. Die Microsoft-Tochter muss…
Im Jahresvergleich legen die Ausgaben für IT Security um fast 14 Prozent zu. Gut die…
Mehr Datenverstöße registriert Surfshark in den USA, Frankreich und Russland. Hierzulande werden im dritten Quartal…
Browsererweiterungen können die Sicherheitsfunktion Site Isolation aushebeln. Betroffen sind Chrome für Windows, macOS und Linux.
Das Plus fällt höher aus als in diesem Jahr. Das größte Wachstum der Ausgaben sagt…