Hibernate Problem mit Speicher

wraith07

Mitglied
Hallo,
ich habe da ein Problem mit dem verfühgbaren Speicher.
Und zwar gehet es da um folgendes.

Mittels Hibernate und Java muss ich von einer Datenbank in die andere kopieren.
Im schlimsten Fallen handelt es sich um 200.000 Datensätze mit je 9 BLOBs a 3,5 MB.

Frage nun.
Es scheint mir so, als ob das Hibernate Framework erst alle Daten einliest ( in Speicher )
und dann erst in die Ziel DB schreibt.

Ist das so?
Wenn ja was gibt es für Möglichkeiten dies zu umgehen?
 
Prinzipiell ist hibernate nicht für Batch-Prozesse solcher Art gedacht, da sich hier der overhead von Hibernate zu deutlich bemerkbar macht.

Hier wäre eine JDBC-Lösung wohl sinnvoller.

Nicht desto trotz, kommt es darauf an, wie du die Daten ausliest und wie dein Fetchsize z.B. eingestellt ist. Aber ohne mehr Wissen, kann ich dir nicht helfen :-(

Kannst dir ja mal die Folien anschauen: http://groups.google.com/group/jug-karlsruhe/web/hibernate tuning 11-27-52-166.pdf
 
Ja das Hibernate nicht dafür gedacht ist habe ich mir schon gedacht.
Aufgabe ist es nun mal mit dem Teil alles zumachen, da die Anwendung unabhänig von der drumterliegenden Datenbank laufen
soll.
 
Hi.
Mittels Hibernate und Java muss ich von einer Datenbank in die andere kopieren.
Im schlimsten Fallen handelt es sich um 200.000 Datensätze mit je 9 BLOBs a 3,5 MB.

Aufgabe ist es nun mal mit dem Teil alles zumachen, da die Anwendung unabhänig von der drumterliegenden Datenbank laufen
soll.
Wenn es nur um Datensätze und nicht wirklich um Migration (Stored Procedures, Schemas etc.) geht, dann sollte doch JDBC eigentlich ausreichen. Normalerweise unterscheiden sich die SQL Dialekte der DBMS nicht so stark in der Hinsicht.

Falls es etwas professioneller sein soll (und man auch etwas Geld anfassen kann/darf), schau dir mal SwisSQL API an.

Du kannst mit Hibernate aber auch einen Cursor verwenden. Siehe z.B. http://www.mastertheboss.com/en/jbo...-to-open-an-online-cursor-with-hibernate.html

Gruß
 
- Wenn du es mit hibernate trotzdem machen willst ist die Frage, wie dein Aufruf stattfindet und wie deine hibernate Konfiguration ist.-> mehr Information bitte :-)

Ansonsten hier mal 2 hibernate Seiten, welche dir helfen könnten:
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html
http://docs.jboss.org/hibernate/core/3.3/reference/en/html/batch.html

- Ansonsten gibt es auch z.B. iBatis so eine Art Zwischenlösung zwischen hibernate und JDBC, aber angelehnt an JDBC.

Ansonsten hat deepthroat Recht. Solange es sich nur um einfaches hin- und herschaufeln geht ist das SQL ziemlich egal.
 
Zurück