Ich habe eine Anwendung A mit einem Domänenmodell, das mithilfe von Hibernate einer Datenbank zugeordnet ist. Ich habe eine andere Anwendung B, die genau die gleichen Domänenmodellklassen wie A verwendet und einige zusätzliche Klassen hinzufügt.
Mein Ziel ist es, Daten aus der Datenbank A in Anwendung B zu lesen und diese Daten in die Datenbank von B zu übertragen (um eine Kopie davon zu erstellen). Darüber hinaus haben einige der Domain-Klassen von B Assoziationen (OneToOne) zu Domain-Klassen von A (aber natürlich in der Datenbank von B).
Was ist die beste Strategie, um dies zu erreichen? Ich dachte an zwei Session-Fabriken und Session.replicate()
(wie funktioniert das?). Oder sollte ich besser eine zusätzliche Mapping-Schicht zwischen diesen beiden Domänen-Modellen für die lose Kopplung einführen?
Ich habe das schon einmal gemacht, um Daten zwischen zwei verschiedenen Datenbanktypen zu übertragen (in meinem Fall DB2 und MS SQL Server). Ich erstellte zwei separate Sitzungsfactorys und gab beiden die gleiche Liste mit Mapping-Dateien. Dann lese ich einfach Datensätze von einem und speichere sie auf dem anderen.
Natürlich ging das davon aus, dass beide Datenquellen identisch waren.
Wie andere bereits gesagt haben, müssen wir genau wissen, was Sie erreichen wollen. Wenn Sie eine einmalige Migration durchführen, gibt es bessere Tools als Hibernate, ETL (Extract, Transform, Load) auszuführen.
Wenn Sie wirklich darauf bestehen, dies in Hibernate zu tun (das gilt auch für Sie, Daniel), würde ich etwas tun wie:
Ich würde das in einem separaten Tool anstatt in Anwendung A oder B tun.
Wenn dies jedoch Teil der Funktionalität Ihrer Anwendungen ist (z. B. Anwendung A ist die Verwaltungskonsole für die Daten, während Anwendung B die Daten verwendet), möchten Sie möglicherweise die Dinge ein wenig anders machen. Es ist schwer zu sagen, ohne zu wissen, wonach genau du suchst.
Zum Schluss noch etwas, in das man schauen kann (ich glaube nicht, dass es das ist, wonach du suchst, aber vielleicht hilft es dir, dein Problem auf eine andere Art zu betrachten) ist Hibernate Shards ( Ссылка ).
Versuchte andere Werkzeuge und hatte Probleme. Hier ist meine selbstgewählte Lösung. Vielleicht brauchen Sie etwas Aufräumen, aber das Fleisch ist da.
%Vor%Tags und Links hibernate