© 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.

Marco Schulz


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-VersionJPA-VersionJSRHibernate 3.2 +JPA 1.0JSR 220 – 05.2006Hibernate 3.5 +JPA 2.0JSR 317 – 12.2009Hibernate 4.3 +JPA 2.1JSR 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 wichtige Basisfunktionen sind, bietet sich diese Position aus architektonischer Sicht für einige nützliche Erweiterungen an. Serialisierung und Deseralisierung der Datenstrukturen nach XML und JSON lassen sich so leicht standardisieren. Um nicht übermäßigen Implementierungsaufwand zu betreiben, sollten diese Services auf Objektebene operieren. Das bedeutet, dass die konkreten Objekte (Entitäten) an die Funktion gereicht werden. Das gestatte...

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


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-VersionJPA-VersionJSRHibernate 3.2 +JPA 1.0JSR 220 – 05.2006Hibernate 3.5 +JPA 2.0JSR 317 – 12.2009Hibernate 4.3 +JPA 2.1JSR 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 wichtige Basisfunktionen sind, bietet sich diese Position aus architektonischer Sicht für einige nützliche Erweiterungen an. Serialisierung und Deseralisierung der Datenstrukturen nach XML und JSON lassen sich so leicht standardisieren. Um nicht übermäßigen Implementierungsaufwand zu betreiben, sollten diese Services auf Objektebene operieren. Das bedeutet, dass die konkreten Objekte (Entitäten) an die Funktion gereicht werden. Das gestatte...

Neugierig geworden?


    
Loading...

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