GEDOPLAN
Jakarta EE (Java EE)

Unenhanced Classes in OpenJPA

Jakarta EE (Java EE)

Persistence Provider müssen die persistenten Klassen für die Laufzeit um (providerspezifischen) Code erweitern, um bspw. Dirty Checks durchführen zu können oder auch Lazy Loading zu implementieren. Je nach Provider geschieht dieses Enhancement durch Manipulation des Bytecodes transparent zur Laufzeit, durch spezielle Werkzeuge zur Build-Zeit oder durch einen Java-Agenten beim Start der Anwendung.

Teilweise wird auch Subclassing als Verfahren angeboten. Dann leitet der Provider von den persistenten Klassen ab und nutzt diese neuen Klassen anstelle der Originale. Das hat aber diverse Nachteile, von denen die Verfälschung der Laufzeittypen der offensichtlichste ist. Teilweise ist dieses Feature aber auch fehlerhaft implementiert – wie im Falle OpenJPA: Setzt man hier die Property openjpa.RuntimeUnenhancedClasses auf supported und nutzt ansonsten keines der o. a. Enhancement-Verfahren (Build-Zeit oder Agent), so kommt es bei unidirektionalen ManyToMany-Relationen zu NullPointerExceptions. Der Bug ist bekannt (https://issues.apache.org/jira/browse/OPENJPA-1908), wird aber vermutlich nicht gefixt, da Subclassing ohnehin keine gute Idee ist.

Also: Nicht nutzen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Bitte füllen Sie dieses Feld aus.
Bitte füllen Sie dieses Feld aus.
Bitte gib eine gültige E-Mail-Adresse ein.
Sie müssen den Bedingungen zustimmen, um fortzufahren.

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Kurse

weitere Blogbeiträge

Webprogrammierung

Weihnachten 2020

GEDOPLAN wünscht Frohe Weihnachten 2020 https://gedoplan.github.io/ged-xmas2020/index.html source: https://github.com/GEDOPLAN/ged-xmas2020
2021 02 09 12 45 23 neues dokument 1 inkscape
Webprogrammierung

Angular E2E mit json-server

Ein E2E-Test dient dazu eine Anwendung „von Vorne bis Hinten“ durchzutesten. Dabei sind viele Hürden zu meistern, angefangen von erreichbarer…

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!

Work Life Balance. Jobs bei Gedoplan

We are looking for you!

Lust bei GEDOPLAN mitzuarbeiten? Wir suchen immer Verstärkung – egal ob Entwickler, Dozent, Trainerberater oder für unser IT-Marketing! Schau doch einfach mal auf unsere Jobseiten! Wir freuen uns auf Dich!