Eclipse Link – Persistence für OSGI Teil 1 : Bundles

Hello again…

nachdem ich nun über die Feiertage etwas Zeit übrig hatte, soll hier ein weitere Post für die Verwendung von EclipseLink folgen.

Nachdem ich das alte PRojekt nun als Bundle-Zip bereitgestellt habe, und nochmals einen Blick hineingeworfen habe, ist mir aufgefallen, das die „No suitable Driver..“ SQL-Exception beim ersten Start der Anwendung erneut auftaucht, somit haben wir 2 Probleme, und zwar können wir zum Laden eines EntityManagers momentan nicht die übliche Zeile Persistence.createEntityManagerFactory(„personUnit“, map) verwenden, sondern wir umgehen die API und verwenden direkt den PersistenceProvider, den uns EclipseLink zur Verfüung stellt, und zwar indem wir statt oberer Zeile folgendes machen

EntityManagerFactory fac = new org.eclipse.persistence.jpa.osgi.PersistenceProvider().createEntityManagerFactory(
„personUnit“, map);

Leider kann ich auch den ersten Blick nicht sehen, was genau das Problem ist.

Für den weiteren Teil des Workshops habe ich das Beispiel etwas angepasst, und zwar insofern, das ich jetzt einen View eingebaut habe, der im Prinzip lediglich einen ListViewer bereitstellt, der alle Personen aus der Datenbank anzeigt. Das ganze sieht in etwa so aus:

view

Der View registriert den Viewer automatisch als SelectionProvider, der Editor registriert sich selbst als SelectionListener beim SelectionService, wodurch eine Selection im View automatisch eine Anpassung aller Attribute im Editor nach sich zieht. Man muss auch nicht extra auf „Save“ drücken, sondern da die Objekte „attached“ bleiben, werden alle Änderungen, die man im Editor macht, direkt in die Datenbank gespeichert.

Aktuell sieht man, das jedesmal, wenn die Anwendung beendet wird, alle bisher gespeicherten Daten gelöscht werden. Um das zu ändern, gleichen wir folgende Zeile an:

<property name=“eclipselink.ddl-generation“
value=“drop-and-create-tables“ />

und machen daraus:

<property name=“eclipselink.ddl-generation“
value=“
create-tables“ />

Zusätzlich müssen natürlich die Bundles für eclipselink in der TargetPlattform verfügbar sein. Ausserdem, wenn ihr die Anwendung mit der HSQL betreiben wollt, müsst ihr das entsprechende Bundle aus dem Springsource Bundle Repository runterladen. Auf dieses ist eine Dependency in der Manifest deklariert. Wollt ihr die Anwendung mit einer anderen Datenbank betreiben, müsst ihr diese Dependency entfernen und dafür sorgen, dass der Treiber zur Runtime verfügbar ist.

Die Beispielbundles in der aktuellen Version bis jetzt sind hier zum Download.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s