Java EE 8 bringt wenig Änderungen für JPA
Lange Zeit war es sehr ruhig um die Weiterentwicklung im Rahmen von Java EE 8. Doch nun gab es mit einem Vortrag von Lukas Jungmann auf der JavaOne und einer Diskussion auf der Mailing-Liste zu Java EE einige Neuigkeiten.
- Thorben Janssen
Es war lange Zeit sehr ruhig um die Weiterentwicklung der Java Persistence API (JPA) im Rahmen von Java EE 8, doch nun gab es mit einem Vortrag von Lukas Jungmann auf der JavaOne und einer Diskussion auf der Java-EE-User-Mailing-Liste einige Neuigkeiten.
Nachdem mit JPA 2.1 umfangreiche Erweiterungen umgesetzt wurden, soll im Rahmen von Java EE 8 lediglich ein Maintenance Release (MR) mit einigen kleineren Änderungen erarbeitet werden. Verantwortlich für das Release wird Lukas Jungmann sein, der Team Lead von EclipseLink JPA. Was er in seiner JavaOne-Präsentation vorgestellt hat, sind die vier Hauptthemen dieses Releases:
- die Verwendung von Java SE 8,
- die Einbindung in die Weiterentwicklung von Java EE 8,
- die verbesserte Integration mit anderen Standards und
- die Bearbeitung von Feedback aus der Community.
Java SE 8 und CDI
Die Anpassung an Java SE 8 und die Unterstützung der neu eingeführten APIs und Konzepte sind ein wichtiges Thema für alle Java-EE-Spezifikationen. Für JPA ist es jedoch von besonderer Bedeutung, da JPA 2.1 die neue Date and Time API noch nicht unterstützt und Entwickler daher entweder auf die Verwendung proprietärer Techniken, wie in Hibernate 5 enthalten, oder eines AttributeConverter ausweichen müssen. Einige weitere Änderungen im Rahmen der Java-SE-8-Anpassungen werden die Unterstützung von Streams und Repeatable Annotations sowie die Implementierung des Autocloseable Interface durch den EntityManager und die EntityManagerFactory sein.
Bei der Integration mit anderen Standards wurde vor allem die bessere Integration mit der CDI-Spezifikation (Contexts and Dependency Injection) genannt. In Zukunft soll zum Beispiel der Einsatz von Injection mittels CDI in AttributeConvertern möglich sein. Nachdem CDI Injection in EntityListener mit JPA 2.1 hinzugefügt wurde, wird das nun nach und nach in immer mehr Teilen der JPA-Spezifikation unterstützt. Ich persönlich würde mich freuen, wenn in Zukunft alle Bereichen der JPA-Spezifikation mit Injection umgehen könnten.
NoSQL und Multitenancy
Weitere Änderungen sind eine bessere Unterstützung von Pagination in JPQL (Java Persistence Query Language) und der Criteria API sowie die Verwendung statischer JPQL-Ausdrücke als Bestandteil eine Criteria Query genannt. Des Weiteren wird zurzeit diskutiert, ob die JPA-Spezifikation NoSQL unterstützen soll oder ob hierfür eine eigene Spezifikation erforderlich ist. Bisher verfügen EclipseLink und Hibernate OGM über proprietäre APIs zur Unterstützung von NoSQL-Datenbanken.Sie haben damit gezeigt, dass die Anwendung der JPA-Konzepte möglich ist, wenn eine Anwendung über ein entsprechendes Modell verfügt.
Nachdem die Unterstützung der Mandatenfähigkeit im Rahmen von JPA 2.1 nicht spezifiziert wurde, steht dieses Feature auch für JPA 2.2 wieder zur Diskussion. Da hierfür allerdings gemeinsam mit anderen Java-EE-Spezifikationen eine ganzheitliche Lösung angestrebt wird, bleibt abzuwarten, ob dieses Features Bestandteil dieses Releases wird.
Fazit
Insgesamt erscheint der Umfang der zu erwartenden Änderungen eher gering. Das ist bei einem Maintenance Release allerdings auch nicht anders zu erwarten. Durch die Unterstützung von Java SE 8 und der verbesserten Integration mit anderen Java-EE-Spezifikationen sind jedoch trotzdem einige nützliche Änderungen geplant. ()