-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Batch Pattern
PostPosted: Fri Jun 26, 2009 7:53 am 
Beginner
Beginner

Joined: Thu Jul 24, 2008 3:33 am
Posts: 20
Hallo!

Ich möchte folgendes Batch-Pattern mit Hibernate umsetzen und wüsste gerne wie, weil ich nicht zurecht komme.
  • Es solle eine grosse Menge von Objekten via HQL aus der Datenbank gelesen werden
  • über diese Menge soll iteriert werden, jedes Objekt wird verändert/ergänzt und wieder gespeichert
Da es sich um eine grosse Menge von Objekten handelt, die viel Platz im Speicher einnehmen, möchte ich die Objekte via ScrollableResults einlesen.
Dieses Pattern brauchen wir immer wieder, funktioniert alles, kein Problem.

Nun möchte ich den Batch so erweitern, dass im Zuge der Bearbeitung der einzelnen Objekte nicht nur wie bisher die Session geflushed/gecleared wird,
sondern auch noch COMMITed wird. Da das einlesende HQL dies berücksichtigt, kann der Batch ohne weiteres durch Neustart wieder aufgesetzt werden,
anstatt wieder von vorne anzufangen.

Nun beginnen die Probleme:
  • ScrollableResults ist ein Cursor, der sich derzeit innerhalb derselben Transaktion befindet. Durch Commit wird die Transaktion geschlossen und ScrollableResults.next funktioniert nicht mehr.
  • Daher glaube ich, dass beide in zwei unterschiedlichen Transaktionen parallel laufen sollten. Kann ich dies in derselben Session machen (wie?)oder habe ich damit zwei unterschiedliche Sessions?
  • Wenn ich zwei Sessions haben, muss ich das mit ScrollableResults gelesene Objekt von einer Session in die andere übergeben. Wie mache ich das, ohne das ein Statement gegen die DB abgesetzt wird?

Kann mir jemand erklären, wie das Hibernate-typische Vorgehen hier aussieht? Bzgl. dieser Batch-Pattern finde ich nicht viel im Internet.
Paging mit setFirstResult/setMaxResults möchte ich nicht verwenden.

Danke schön, CL


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.