Frage

Ich muss ein Datenmodell (in einer Java-EE 6-Anwendung) entwerfen, das über JPA bestehen bleibt und auch über JAXB serialisiert werden muss.Das letzte Mal, als ich das tat, hatte ich eine Gruppe von Entitätsklassen mit JAXB-Annotationen und einem anderen mit JPA-Anmerkungen.Dies bedeutete, dass ich viel Kesselkodex für die Übersetzung zwischen den beiden hatten.Ich denke daran, sie zu kombinieren, damit jede Klasse beide Arten von Anmerkungen hat.Ich weiß, dass das kann gemacht werden, aber meine Frage ist, sollte es sein?Wird es Probleme verursachen?

War es hilfreich?

Lösung

Die Frage ist für mich etwas zu breit, um zu antworten. Ich habe jedoch spezielle Erfahrungen mit jackson unter jaxb mit jpa-Entitäten, die Sie interessant finden könnten.

In meinem Fall hatte ich ein JPA-Modell mit ungefähr drei Dutzend Entitäten und vielen cyclischen Referenzen. Die Grafik von Beziehungen zwischen den Entitäten war ebenfalls fast stark verbunden. Mit anderen Worten, es war möglich, zu fast jeder Entität in dem von anderen von anderen Einsatzgründen zu navigieren, indem er Entitätsbeziehungen folgt. In meinem Fall, mit Entitäten wie beschrieben und Jackson 1.5, stellte sich Jaxb-Anmerkungen auf meiner JPA-Entitäten als eine schlechte Idee heraus.

Für eine Sache kam Jackson 1.5 auf den zyklischen Referenzen in unendliche Rekursion. Ich halte diesen Bedienfehler anstelle eines Fehlers an. Jackson ist eine großartige Software. Ich denke auch, dass die kommende 1.6-Version neue Funktionen zur Verfügung stellt, um dies pro jackson-235 zu behandeln. Das könnte also bald amtiert sein!

meine anderen Schwierigkeiten im Zusammenhang mit serialisierter Kompaktheit angesichts stark verbundener Entitäten. Die Serialisierung von all meinen Entitätsbeziehungen war unpraktisch. Ich hätte in jeder Bitte ein obszöner Betrag von irrelevanten Informationen serialisiert, indem ich alle Entitätsbeziehungen in voller Tiefe naiv beeinträchtigt.

Ich wollte mehrere Serialisationen meiner JAXB-Objekte angeben, die je nach Verwendung eines mit entsprechenden Feldern und Beziehungen auswählen. Aber, soweit ich weiß, bieten Jaxb und Jackson keine solche Flexibilität. Sie bieten eine erhebliche Flexibilität bei der Definition von der -Registrierung - Was ist vorübergehend, wie Listen aussehen usw. - aber ich glaube nicht, dass mehrere Darstellungen für ein Objekt möglich sind. Vielleicht gibt es einen klugen Weg, um mehrere Darstellungen unter JAXB oder Jackson zu definieren und zur Laufzeit zu wechseln ... Ich würde interessiert sein, wenn ein solches Ding existiert. Vielleicht gibt es eine Funktion, für die ich unwissend bin oder etwas Trickery, das mit Unterklassen gespielt werden kann. Aber ich konnte es nicht finden, also letztendlich gab ich auf und ging mit DTOs.

Wieder ist dies alles ziemlich für das Modell. Vielleicht sind dies nicht Probleme für Sie (oder vielleicht haben Sie kluge Lösungen für diese Probleme!)

Andere Tipps

Dies kann definitiv durchgeführt werden. Ich finde eigentlich die Perspektive, Code aufrechtzuerhalten, um zwischen den Modellen problematischer zu kopieren.

eclipelink ist eine großartige Wahl für diese Anwendung, da es sowohl eine JPA enthält (Eclipelink ist der RI und offen von toplink bezogen) und eine JAXB-Implementierung.

ECLIPELINK JAXB (Moxy) enthält auch eine Reihe von Erweiterungen, um JPA-Entitäten zu Mapping JPA XML:

Weitere Informationen finden Sie unter:

datanucleus Ermöglicht die Persistenz mithilfe von JPA an RDBMS (mithilfe von JDBC hinter den Szenen) und XML (mit JAXB hinter den Szenen).Es kann Ihre JPA-Anmerkungen als definieren, wenn die JAXB-Serialisierung ausgeführt wird - Sie könnten auch JAXB-Anmerkungen hinzufügen, wenn Sie so wünschten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top