JPA: Eine Klasse auf 2 verschiedene Tabellen mappen (Stammdaten und Archivdaten)?

DarthShader

Erfahrenes Mitglied
Hallo zusammen,

ich habe eine Frage über die Softwarearchitektur bezüglich der Themen "Persistance API" und "Objektrelationales Mapping" in folgender Situation:

Es gibt eine fachliche Klasse eines Domain Modells, "Adresse". Diese Klasse besitzt die Annotation "@Table( name = "cfg_addresses" )". "cfg_addresses" ist eine Tabelle in einem Datenbankschema, welche Stammdaten enthält.

Nun gibt es andere Tabellen, die gewisse von einem Java Programm erfasste Dokumente archiviert. Ich schreibe demnach eine Kopie der Adressdaten in weitere Tabellen, und stelle keinen Join her, da ja, sollten sich die Stammdaten ändern, dann auch die archivierten Adressen weg wären.

Dies führt aber zu folgendem Dilemma: Ich kann die Klasse "Adresse" nicht für Stammdaten *und* für die archivierten Daten verwenden, da "Adresse" ja via @Table nur einer Tabelle zugeordnet ist.

Mometan hantiere ich quasi mit zwei Klassen rum, eine Adressen-Klasse für die Stammdaten, eine für die archivierten Daten. Das ist sehr umständlich, und ich muss ständig die Objekte kopieren etc. Umständlich wird es weiterhin, wenn ich mehrere Klassen dieser Art habe, die es also als Stammdaten Objekt für die eine Tabelle, und zum Archivieren ("wegschreiben") für eine andere Tabelle gibt.


Gibt es dafür vielleicht eine elegante Lösung? Sprich, ich habe eine Klasse "Adresse", diese wird aber je nach Kontext (verwende ich es für Stammdaten z.B. in einem Administrationsprogramm), oder verwende ich sie zum Archivieren von Dokumenteneigenschaften) auf zwei verschiedene Tabellen gemappt.

(Vielleicht habe ich hier ja auch einen Denkfehler, und es gibt eine bessere Vorgehensweise?)


Über Eure Hilfe würde ich mich sehr freuen

Vielen Dank!
 
Zurück