© Excellent backgrounds/Shutterstock.com
Java Magazin
Persistenztricks für Fortgeschrittene

Advanced JPA


Aus diversen Projekterfahrungen haben sich beim Einsatz des Java Persistence API für die Entwicklung von Applikationen einige Best Practices herauskristallisiert, die sich als äußerst nützlich erwiesen haben. Die Erweiterung des DAO-Patterns, ein weiterführendes Konzept zum Schreiben von Testfällen und die Möglichkeit, mit Entitätsobjekten eine Vererbung abzubilden, sind Punkte, die an dieser Stelle diskutiert werden.

Da Hibernate [1] eine Implementierung des Java Persistence API (JPA) [2] ist, bauen die vorgestellten Beispiele darauf auf. Neben Hibernate sind weitere Referenzimplementierungen der JPA EclipseLink [3], Apache OpenJPA [4] und Oracle TopLink Essentials [5]. Ein Grund, der zur Verwendung von Hibernate geführt hat, ist die starke Verbreitung in vielen Enterprise-Projekten. Dadurch hat sich eine große Community gebildet. Daraus ergibt sich wiederum eine sehr umfangreiche Dokumentation, die nützliche Informationen zur Verwendung von Hibernate bereithält. Ein anderer Aspekt ist die reibungslose Kombination mit dem Dependency-Injection-(DI-)Framework Spring.

Vorsicht ist bei einem Wechsel auf eine andere Major-Version geboten. In aller Regel ist die eine oder andere Anpassung vorzunehmen. Erfahrungsgemäß verändern sich beispielsweise Einstellungen der Konfiguration, die dann durch umfangreiche Tests geprüft werden müssen. Gefahren lauern beispielsweise in unzureichender Performance, was verschiedene Ursachen haben kann. Klassische Fallstrike lauern außerdem oft bei der unglücklichen Verwendung von Lazy oder Eager Loading, unsauber geschlossenen Transaktionen oder übermäßigem Gebrauch eines Commits der Entitäten in die Persistenzschicht. Tabelle 1 zeigt, welche Hibernate-Version das JPA entsprechend umsetzt.

Hibernate-Version

JPA-Version

JSR

Hibernate 3.2 +

JPA 1.0

JSR 220 – 05.2006

Hibernate 3.5 +

JPA 2.0

JSR 317 – 12.2009

Hibernate 4.3 +

JPA 2.1

JSR 338 – 04.2013

Tabelle 1: Übersicht der Hibernate-Versionen mit dem umgesetzten JPA-Standard [7]

Wenn man sich tiefergehend mit der Thematik befasst, eröffnen sich verschiedene Aspekte, die zu einem genaueren Blick verführen. So lassen sich spezielle Fragen klären, die für manche Projekte einen hervorragenden Lösungsansatz offerieren. So kann beispielsweise das Data-Access-Object-(DAO-)Pattern mit weiteren Funktionalitäten angereichert werden. Eine Einführung in das DAO-Pattern findet sich unter [6].

Extended DAO

Im DAO-Pattern werden grundsätzlich die CRUD-Operationen vorgehalten. Da dies wichtig...

Java Magazin
Persistenztricks für Fortgeschrittene

Advanced JPA

Aus diversen Projekterfahrungen haben sich beim Einsatz des Java Persistence API für die Entwicklung von Applikationen einige Best Practices herauskristallisiert, die sich als äußerst nützlich erwiesen haben. Die Erweiterung des DAO-Patterns, ein weiterführendes Konzept zum Schreiben von Testfällen und die Möglichkeit, mit Entitätsobjekten eine Vererbung abzubilden, sind Punkte, die an dieser Stelle diskutiert werden.

Marco Schulz


Aus diversen Projekterfahrungen haben sich beim Einsatz des Java Persistence API für die Entwicklung von Applikationen einige Best Practices herauskristallisiert, die sich als äußerst nützlich erwiesen haben. Die Erweiterung des DAO-Patterns, ein weiterführendes Konzept zum Schreiben von Testfällen und die Möglichkeit, mit Entitätsobjekten eine Vererbung abzubilden, sind Punkte, die an dieser Stelle diskutiert werden.

Da Hibernate [1] eine Implementierung des Java Persistence API (JPA) [2] ist, bauen die vorgestellten Beispiele darauf auf. Neben Hibernate sind weitere Referenzimplementierungen der JPA EclipseLink [3], Apache OpenJPA [4] und Oracle TopLink Essentials [5]. Ein Grund, der zur Verwendung von Hibernate geführt hat, ist die starke Verbreitung in vielen Enterprise-Projekten. Dadurch hat sich eine große Community gebildet. Daraus ergibt sich wiederum eine sehr umfangreiche Dokumentation, die nützliche Informationen zur Verwendung von Hibernate bereithält. Ein anderer Aspekt ist die reibungslose Kombination mit dem Dependency-Injection-(DI-)Framework Spring.

Vorsicht ist bei einem Wechsel auf eine andere Major-Version geboten. In aller Regel ist die eine oder andere Anpassung vorzunehmen. Erfahrungsgemäß verändern sich beispielsweise Einstellungen der Konfiguration, die dann durch umfangreiche Tests geprüft werden müssen. Gefahren lauern beispielsweise in unzureichender Performance, was verschiedene Ursachen haben kann. Klassische Fallstrike lauern außerdem oft bei der unglücklichen Verwendung von Lazy oder Eager Loading, unsauber geschlossenen Transaktionen oder übermäßigem Gebrauch eines Commits der Entitäten in die Persistenzschicht. Tabelle 1 zeigt, welche Hibernate-Version das JPA entsprechend umsetzt.

Hibernate-Version

JPA-Version

JSR

Hibernate 3.2 +

JPA 1.0

JSR 220 – 05.2006

Hibernate 3.5 +

JPA 2.0

JSR 317 – 12.2009

Hibernate 4.3 +

JPA 2.1

JSR 338 – 04.2013

Tabelle 1: Übersicht der Hibernate-Versionen mit dem umgesetzten JPA-Standard [7]

Wenn man sich tiefergehend mit der Thematik befasst, eröffnen sich verschiedene Aspekte, die zu einem genaueren Blick verführen. So lassen sich spezielle Fragen klären, die für manche Projekte einen hervorragenden Lösungsansatz offerieren. So kann beispielsweise das Data-Access-Object-(DAO-)Pattern mit weiteren Funktionalitäten angereichert werden. Eine Einführung in das DAO-Pattern findet sich unter [6].

Extended DAO

Im DAO-Pattern werden grundsätzlich die CRUD-Operationen vorgehalten. Da dies wichtig...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang