Spring Framework Grundkurs

Java Persistence API und Spring

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Die Java Persistence API schafft es, die darunter liegenden Persistenz-Frameworks austauschbar zu machen, wie den Wechsel von Hibernate zu EclipseLink. Spring trägt zu dieser Austauschbarkeit einen wesentlichen Teil bei.

Transkript

Normalerweise möchte man das objektrelationale Mappig Framework seiner Wahl nutzen. Das bedeutet, man möchte sich z.B. zwischen Hibernate und EclipseLink entscheiden können. Die so genannte JPA, Java Persistence API, kümmert sich um genau das. Sie harmonisiert die Interfaces zwischen den verschiedenen Persistenz-Frameworks. Die Möglichkeiten, wie Spring sich genau dort integriert, möchte ich Ihnen nun zeigen. Zunächst einmal steht über allem der JPA 2.0 Standard, nach der Java Standard Recommendation 317. Dieser erlaubt es, die Austauschbarkeit des ORM Frameworks vorzunehmen. Das betrifft einerseits Hibernate, EclipseLink und auch andere Frameworks, die diese API einbinden. Alle wichtigen Annotationen, die zu diesem Framework dazugehören, sind in javax Persistence definiert und damit Framework Unabhängig. Im Kontrast zu der Nutzung mit Hibernate steht nun der Entity Manager im Mittelpunkt. Er verwaltet den so genannten Persisitenz Kontext und ist in der Lage, Entitäten zu speichern, abzurufen und Queries zu erstellen. Anders als die Hibernate Query Language kommt bei JPA die so genannte Java Persistence Query Language zum Einsatz. Im Wesentlichen ähneln sie sich aber von der Art und Weise, wie sie benutzt werden. Um nun Spring konkret in diesen Zusammenhang zu bringen würde man im Rahmen der Initialisierung nun den so genannten LocalContainerEntityManagerFactoryBean benutzen. Er erlaubt es dann wiederum, eine externe Data Source einzubinden. Lassen Sie mich also nun die Nutzung von JPA und Spring anhand eines Beispiels demonstrieren. Zunächst einmal ist es wichtig, dass alle Abhängigkeiten eingebunden sind. Dazu gehören in diesem Beispiel sowohl das objektrelationale Mapping für Spring die Transaktionen, EclipseLink und Hibernate als jeweils Persistence Provider Außerdem ist eine Datenbanklösung, in dem Fall H2 Datenbank eingebunden. Um nun Hibernate mit JPA nutzen zu können, bedarf es anderer Konfigurationen. In diesem Fall sieht man nun, dass der Transaktionsmanager der JPA Transaction Manager ist. Für den Persistenzcontext wird die LocalContainerEntityManagerFactoryBean erstellt, und für diese muss dann ein VendorAdapter spezifiziert werden. In dem Fall ist das Hibernate. Die restlichen Parameter sind ähnlich zu der Nutzung von Hibernate selbst. Man gibt die Properties an, die für Hibernate bestimmt sind, wie z.B. den Datenbankdialekt, und die Möglichkeit, Tabellen zu erstellen. Alle Entitätsobjekte können genauso verwendet werden, wie sie in Hibernate verendet wurden, ursprünglich, ohne JPA. Denn alle Annotationen, die hier verwendet werden, entstammen bereits dem Paket von javaxPersistence. Lediglich die DataAccess Objekte müssen angepasst werden. Z.B. Car Data Access Object nutzt nun den Persistence Kontext. Dieser spezifiziert den generellen Entity Manager und anders als bisher, benutzt er diese Methode, die sich Merge nennt, um eine Entität z.B. zu speichern. Außerdem: statt getNamesQuery wird createNamedQuery verwendet, um den jeweiligen NameQuery zu referenzieren. Bei der Ausführung des Ganzen ist der Ablauf genau so wie vorher. D.h. es wird lediglich JPA Config geladen, und dementsprechend die Konfiguration vorgenommen und die Objekte abgerufen. Führt man dieses Beispiel nun aus, sieht man, dass der Prozess genauso wie mit der normalen Hibernate Nutzung funktioniert. Der große Vorteil ist jetzt an der Stelle, dass man ohne große Komplexität das jeweilige Framework austauschen kann, in dem Fall mit EclipseLink. Die Nutzung hier ist genau die selbe, Es nutzt auch die Person Data Access Object Implementierung und die Car Data Access Object Implementierung, lediglich die Konfigurationsdatei ist ein wenig verändert. Im Falle von EclipseLink ist also hier der VendorAdapter der EclipseLink JPA VendorAdapter und die Konfigurationsparameter sind EclipseLink spezifisch. Z.B. der Datenbankdialekt wird hier über die Plattform spezifiziert, das Tabellen erstellt werden, wird über ddl-generation spezifiziert, uns außerdem sollte weaving deaktiviert werden. Führt man also genau dieses Projekt auch mit EclipseLink aus, sieht die ganze Nachrichtenreihenfolge ein wenig anders aus aber das Ergebnis ist im Wesentlichen das Gleiche. Alle Objekte wurden übernommen. Auch wenn die API nun ziemlich gleich ist, sollte man trotzdem immer beachten, dass sich beide Frameworks unterschiedlich verhalten können zur Laufzeit. Deshalb: sollte man das jeweilige Hibernate, EclipseLink oder andere JPA Framework austauschen, sollte man auch immer prüfen, ob die Funktionalität auch tatsächlich gleich ist Sie haben nun also gesehen, wie Sie mit Hilfe von Spring die jeweilige JPA Implementierung, die Ihre Datenperistenz übernimmt, problemlos austauschen können.

Spring Framework Grundkurs

Steigen sie zum Java-Champion auf und meistern Sie den Umgang mit dem Spring Framework.

2 Std. 4 min (20 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Spring Framework Spring Framework 3
Exklusiv für Abo-Kunden
Erscheinungsdatum:24.09.2014

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!