Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hi,
zur Zeit hole ich mir alle Objekte mittels Hibernate in eine jTable. Erste Spalte (ausgeblendet) das Objekt. 2te,3te 4te usw enthalten angezeigte values. Klickt man auf eine Zeile öffnet sich ein Formular. Dem Formular wird das komplette Objekt aus Spalte 1 übergeben.
Sollte ich nun die Objekte in der Tabelle lassen oder nur die IDs?
Ein komplettes Objekt in der Tabelle hat Vorteile. Zum Beispiel musst du in der Tabelle ja vermutlich keine Ids anzeigen, sondern die Werte. Da hast du, wenn du Ids speicherst eventuell bei jedem repaint einen Datenbankzugriff. Das wird ziemlich performancelastig. Außerdem sind die Hibernate- Objekte ja (vermutlich) persistent. Dann würde eine Änderung in der Tabelle mittels TableCellEditor direkt das Objekt beeinflussen.
Eine ID im TableModel zu speichern ist weniger speicherhungrig. Je nachdem was der Rechner sonst noch so macht und wieviele Objekte es sind kann das auch Vorteile haben.
Ich würde erstmal die Objekte nehmen, falls dann eine OutOfMemory- Exception fliegt, kannst du immernoch auf IDs umsteigen.
ein Mittelding wäre, weder die Ids noch die echten, von Hibernate in einer Transaktion aktiv überwachten Objekte zu verwenden,
sondern lokale Kopien ohne Relevanz für die Datenbank,
kann ruhig dieselbe Klasse sein, wenn man selber weiß, was wo hingehört
also zur zeit sind es "tote" objekte. Sie gehen erst wieder in eine transaktion wenn ich sie speichern will. Problem ist dann natürlich wenn ein andere Benutzer bereits vor dem letzten refresh was geändert hat, dann bekommt der Benutzer es nicht mit. Dann werden diese Änderungen nicht sofort angezeigt. Vorteil: Die Objekte sind schon komplett da und die Datenbank muss nichts tun. Ich denke ich werde die Objekte weiterhin komplett reinladen und dann erst beim drücken des "ändern" knopfes im Formular refreshen. Ich schaue mal
Ich denke es werden mal so um die 10.000 Datensätze. Die Performance schaue ich mir mal mit 30.000 Datensätzen an.
bei sovielen Datensätzen sollte man bedenken, dass eine normale JTable nur 30 oder so davon anzeigt und der User sicher auch nicht ständig scrollt,
da kann man also an den Models dran bleiben und mitverfolgen, welche Daten benötigt werden + gegebenenfalls nachladen/ aktualisieren
aber vielleicht ist das auch zu langsam, wer scrollt, will sofort passende Daten haben, nicht 1 sec. auf DB-Anfragen warten..
(auch wenn es nur eine Anfrage wäre für die 30 neuen Daten statt etwa 30 einzelne Anfragen)
vielleicht die alten Daten anzeigen und im Hintergrund neue laden + automatisch austauschen