Teil 1: Die wichtigsten Kombinationsmöglichkeiten

JSF und JPA im Tandem

Bernd Müller


JSF feierte im März dieses Jahres seinen zehnten Geburtstag, JPA wird im Mai 2016 zehn Jahre alt. Beide Spezifikationen sind Bestandteil von Java EE 5, 6 und 7 und werden dies auch noch in weiteren EE-Versionen sein. Obwohl es z. B. im Java-EE-5-Tutorial einen zumindest beabsichtigten Standardweg zur Verwendung von JSF und JPA – nämlich mit EJBs – gibt, hat sich das mit der Einführung und Etablierung von CDI in Java EE 6 und 7 geändert. Es gibt nun innerhalb von Java EE in der Logikschicht die Möglichkeit, zwischen CDI und EJB zu wählen, unabhängig von der EE-Version komplett z. B. mit Web Services die Schichten zu trennen oder, ohne weitere EE-Spezifikationen zu verwenden, JSF und JPA direkt zu verbinden. Wie immer in der Softwareentwicklung gibt es also viele Wege, die nach Rom führen. Dieser Artikel stellt im ersten Teil die wichtigsten und verbreitetsten Kombinationsmöglichkeiten von JSF und JPA vor. Basis ist Java EE 6. Wir geben aber auch einen Ausblick auf Java EE 7. Im zweiten Teil gehen wir auf ein mögliches und bei naivem Herangehen häufiges Problem bei der Verbindung von JSF und JPA ein, nämlich das Auflösen nicht initialisierter Proxies außerhalb eines aktiven Persistenzkontexts. Dies führt bei der Verwendung von Hibernate zur berühmt-berüchtigten LazyInitializationException.

ArtikelserieTeil 1: Die wichtigsten KombinationsmöglichkeitenTeil 2: Auflösen nicht initialisierter Proxies

Kombinationsmöglichkeiten

Die bereits angedeutete Vielzahl von Optionen ist, zumindest teilweise, in Tabelle 1 dargestellt. Die zweite Zeile stellt die JSF-View, die letzte Zeile die JPA-Entity dar. Wie bei JPA bedeuten auch die anderen Spezifikationsabkürzungen (JSF, CDI, EJB) eine Instanz der entsprechenden Technologie. Die weiteren Abkürzungen bedürfen einer kurzen Erläuterung. PC steht für Persistence Context und deutet die direkte Verwaltung des Persistenzkontexts in der Alternative 2 an. DTO steht für das Data Transfer Object Pattern, das in Möglichkeit 5 Verwendung findet. Schließlich zeigt WS in Alternative 6 die Verwendung eines Web Service. Die in Tabelle 1 dargestellten Möglichkeiten geben nicht das gesamte Spektrum wieder. Am Ende des Artikels benennen wir weitere Optionen. Zunächst gehen wir nun aber auf die einzelnen Alternativen der Tabelle 1 detailliert ein.

123456JSFJSFJSFJSFJSFPCCDIDTOWSEJBEJBEJBEJBJPAJPAJPAJPAJPAJPA

Tabelle 1: Kombinationsmöglichkeiten im Überblick

Möglichkeit 1

Um allgemein verfügba...

Teil 1: Die wichtigsten Kombinationsmöglichkeiten

JSF und JPA im Tandem

Bernd Müller


JSF feierte im März dieses Jahres seinen zehnten Geburtstag, JPA wird im Mai 2016 zehn Jahre alt. Beide Spezifikationen sind Bestandteil von Java EE 5, 6 und 7 und werden dies auch noch in weiteren EE-Versionen sein. Obwohl es z. B. im Java-EE-5-Tutorial einen zumindest beabsichtigten Standardweg zur Verwendung von JSF und JPA – nämlich mit EJBs – gibt, hat sich das mit der Einführung und Etablierung von CDI in Java EE 6 und 7 geändert. Es gibt nun innerhalb von Java EE in der Logikschicht die Möglichkeit, zwischen CDI und EJB zu wählen, unabhängig von der EE-Version komplett z. B. mit Web Services die Schichten zu trennen oder, ohne weitere EE-Spezifikationen zu verwenden, JSF und JPA direkt zu verbinden. Wie immer in der Softwareentwicklung gibt es also viele Wege, die nach Rom führen. Dieser Artikel stellt im ersten Teil die wichtigsten und verbreitetsten Kombinationsmöglichkeiten von JSF und JPA vor. Basis ist Java EE 6. Wir geben aber auch einen Ausblick auf Java EE 7. Im zweiten Teil gehen wir auf ein mögliches und bei naivem Herangehen häufiges Problem bei der Verbindung von JSF und JPA ein, nämlich das Auflösen nicht initialisierter Proxies außerhalb eines aktiven Persistenzkontexts. Dies führt bei der Verwendung von Hibernate zur berühmt-berüchtigten LazyInitializationException.

ArtikelserieTeil 1: Die wichtigsten KombinationsmöglichkeitenTeil 2: Auflösen nicht initialisierter Proxies

Kombinationsmöglichkeiten

Die bereits angedeutete Vielzahl von Optionen ist, zumindest teilweise, in Tabelle 1 dargestellt. Die zweite Zeile stellt die JSF-View, die letzte Zeile die JPA-Entity dar. Wie bei JPA bedeuten auch die anderen Spezifikationsabkürzungen (JSF, CDI, EJB) eine Instanz der entsprechenden Technologie. Die weiteren Abkürzungen bedürfen einer kurzen Erläuterung. PC steht für Persistence Context und deutet die direkte Verwaltung des Persistenzkontexts in der Alternative 2 an. DTO steht für das Data Transfer Object Pattern, das in Möglichkeit 5 Verwendung findet. Schließlich zeigt WS in Alternative 6 die Verwendung eines Web Service. Die in Tabelle 1 dargestellten Möglichkeiten geben nicht das gesamte Spektrum wieder. Am Ende des Artikels benennen wir weitere Optionen. Zunächst gehen wir nun aber auf die einzelnen Alternativen der Tabelle 1 detailliert ein.

123456JSFJSFJSFJSFJSFPCCDIDTOWSEJBEJBEJBEJBJPAJPAJPAJPAJPAJPA

Tabelle 1: Kombinationsmöglichkeiten im Überblick

Möglichkeit 1

Um allgemein verfügba...

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