Hibernate - externe Datenbank zur Laufzeit ansprechen

y0dA

Erfahrenes Mitglied
Hallo!
Also vorzustellen ist es so, dass man Daten aus einer externen Datenbank lädt - der Driver für die DB muss nachgeladen werden sowie eine Verbindung mit der DB aufgebaut werden.

Kann ich einfach Hibernate umgehen oder gibt es eine Möglichkeit dass ich innerhalb der Applikation für eine Methode eine andere DB benutze?

mfg
 
Schau dir mal das JavaDoc von Configuration und SessionFactory an. Um Hibernate zur Laufzeit umzukonfigurieren musst du eine Instanz von Configuration erzeugen und damit eine SessionFactory füttern. getSession auf der neuen SessionFactory geht danach auf die neue DB.

Gruß
Ollie
 
Ja und wie komme ich dann wieder auf die alte Konfiguration zurück, welche mittels einem Konfig-File geladen wird, also nicht irgendwo im Code rumgammelt.
 
Heb dir doch die Refenz auf die Original SessionFactory auf. Ich vermute, die wird sowieso über so eine HibernateUtils Klasse hochgezogen. Zur Not rufst einfach die initialisierende Methode nochmal.

Gruß
Ollie
 
Stimmt, danke.

Jedoch gäbe nicht auch die Möglichkeit dass ich das Ganze ohne Hibernate abwickle, da ich eben die DB bzw die Tabellen zur Laufzeit nicht kenne, sondern halt als Parameter übergeben bekomme - sprich ich habe dann kein richtiges Mapping, also keine Mapping Files? Weiters wäre es auch noch interessant wie es performancetechnisch aussieht, wenn ich hier die Configurationen hin und her spiele.
 
Du kannst natürlich auch mit Plain JDBC (bzw. idealerweise mit Springs JDBCTemplate) auf ne andere Datenbank. Wenn deine Domänenobjekte der zweiten variablen DB Verbindung mit Hibernate nix zu tun haben, hat die Verbindung ja mit Hibernate ja eh nichts zu tun.

Eine SessionFactory zu erzeugen ist recht teuer. Alle paar Sekunden die Konfiguration ändern ist da eher ungünstig.

Wenn es nur ein paar einfache Datenbankanfragen sind und man nicht auf kompliziertes OR Mapping angewiesen ist kommt man mit dem JDBCTemplate (was man übrigens auch ohne den ganzen Springrest benutzen kann) und dem RowMapper Interface recht weit.

Gruß
Ollie
 
Irgendwie möchtest du mir "ständig" Spring andrehen :).

Also mache ich es mit guten altem JDBC.

danke.
 
Ich möchte dir gar nichts andrehen. ;) Wie ich schrieb ist das JDBCTemplate vollkommen ohne das Drumherum (DI Container etc) nutzbar. Wenn du den ganzen Lowlevel JDBC Kram (v.a. das korrekte Ressourcen aufräumen) selber coden möchtest, bitte schön. Nur trägt 90% des plain JDBC Codes, den ich bisher gesehen habe entweder Fehler in sich, oder besteht zum Großteil aus Boilerplate Code, den ich persönlich einfach nciht schreiben mag. Und warum, was selber coden, wenn es ne Bibliothek gibt, die Millionenfach verwendet (und getestet ist!) wird und dir genau das abnimmt.

Oder kommst du auf die Idee, Sachen selbst zu implementieren, die du per Jakarta Commons bekommen kannst? ;)

Gruß
Ollie
 
Ich habe bisher noch keine Spring Erfahrungen sammeln können und im Moment keine Zeit dafür, ausserdem würde es keinen Sinn machen für diese kleinen Anwendungsteil nun mit Spring zu arbeiten. Und was JDBC angeht, hab ich hier eh schon Templates von einem vorherigen Projekt.
 
Zurück