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

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!