Am 31.1.2013 präsentierte die akquinet AG gemeinsam mit der Gedoplan GmbH zwei Vorträge zum Thema JPA – der Java Persistenz-Standard. Die Veranstaltung wurde gemeinsam mit der Java User Group Berlin Brandenburg organisiert und fand im Hörsaal der Informatik der FU Berlin statt. Mit ca. 100 Teilnehmern und vielen Fragen an die Experten Michael Bouschen und Dirk Weil bestand ein großes Interesse an dem Thema.
![]() |
![]() |
Vortrag 1: „JPA – Der Persistenz-Standard in der Java EE und SE“
Die Abbildung relationaler Strukturen einer Datenbank auf die objekt-orientierte Programmiersprache Java bringt einige Herausforderungen mit sich, bekannt als object-relational impedance mismatch. In Java ermöglicht JDBC zwar die Interaktion mir einer relationalen Datenbank aber nicht die Abbildung der Daten auf Objekte. Die bekannten Produkte wie Hibernate oder EclipseLink widmen sich diesem Problem bereits seit Jahren. Mit JPA hat der Java Community Process einen Standard für Java EE und SE definiert, der ein einheitliches API bietet, welches von den Anbietern unterstützt wird. Der Vortrag zeigt was JPA bietet und welche Vorteile der Standard für die Anwendungsentwicklung mit sich bringt.
Vortrag 2: „Optimierung von JPA – Anwendungen“
War Persistenz in Java EE früher schwergewichtig und unflexibel, so steht nun der leichtgewichtige Standard JPA mit Providern wie EclipseLink und Hibernate zur Verfügung. Die Einfachheit ist bestechend, verleitet aber auch zu unbedachtem Einsatz mit teilweise enttäuschender Performanz. Der Vortrag zeigt wie JPA-Anwendungen auf den nötigen Durchsatz hin optimiert werden können.
Interessante Slides, insbesondere über das Thema Performance mit JPA. Würde mich freuen, Sie mal an der JUGS (Java User Group Switzerland: http://www.jug.ch) zu hören.
Da Sie neben JPA auch den weniger bekannten Standard JDO erwähnen, würde es mich interessieren, wie Sie die beiden Standards mit stärker SQL-orientierten “proprietären” Lösungen vergleichen würden, z.B:
– jOOQ (http://www.jooq.org)
– MyBatis (http://www.mybatis.org)
Vielen Dank für das Feedback.
Zu den Frameworks: für einen wirklichen Vergleich kenne ich jOOQ und MyBatis nicht gut genug. Beide Frameworks orientieren sich stark an SQL und sind keine ORM Frameworks, d.h. die Abbildung der objekt-orientieren in die relationale Welt wird von dem Entickler selbst gemacht. Bei komplexeren Strukturen ist dies eine Herausforderung (Relationen, Identität, etc.). Für Entwickler ohne gute SQL Kenntnisse oder Projekte mit einem Objekt-Model als Ausgangspunkt scheinen sie mir nicht geeignet.
Sowohl JPA als auch JDO abstrahieren von der Persistenz-Implementierung und der darunter liegenden Datenbank. Ich kann nicht beurteilen, ob diese Unabhängigkeit von der relationalen Datenbank auch bei jOOQ und MyBatis gegeben ist.
Für den lesenden Zugriff bieten die Frameworks Vorteile und sind der direkten Verwendung von JDBC vorzuziehen. Für den schreibenden Zugriff fehlen mir die Unterstützung von Transaktionen, persistenter Identität, Lifecycle und (zum Teil) Caching persistenter Instanzen.
Die Unabhängigkeit von der relationalen Datenbank ist bei jOOQ gegeben, da die SQL Syntax standardisiert wird. Bei MyBatis gibt es gewisse Mechanismen, um manuell zwischen Datenbankherstellern zu unterscheiden. Dies scheint mir allerdings tatsächlich etwas umständlich und fehleranfällig.
Es ist natürlich so, dass die Unterstützung von Transaktionen, Identität und Caching nicht vorhanden ist, da diese bewusst weggelassen wurden. Man kann sich natürlich darüber streiten, ob das ein Pro oder ein Kontra ist. Meine Erfahrung ist diejenige, dass die meisten jOOQ-Nutzer dieses Weglassen eher begrüssen.