Java Hibernate

Hallo

ich habe vor in naher Zukunft ein etwas größere Anwendung in Java zu entwickeln. Als persistente Datenhaltung soll eine Datenbank herhalten. Damit ich als Entwickler mich nicht so genau um die Datenbank-Anbindung kümmern muss habe ich mich nach ein paar Technologien umgeschaut und bin dabei auf Hibernate gestoßen.
Nun meine Frage: Hat jemand Erfahrung damit? und könnte mir etwas sagen über:
wie es sich bei größeren Datenmengen verhällt und wie es im Mehrbenutzer-Betrieb funktioniert? Also wenn ich eine zentrale Datenbank habe aber mehrere Client Anwendungen. Werden Änderungen anderer Benutzer für mich direkt ersichtlich? Oder muss ich manuell nachschauen ob sich was in der Datenbank geändert hat und alles neu laden? Muss ich wirklich dann alles neuladen oder nur die Änderungen? usw ...

Gruß
benwilliam
 
Hi,

ich arbeite jetzt schon seit 4 Jahren mit Hibernate und das verwenden wir mittlerweile standardmäßig in jeder unserer Anwendungen.

Läßt man eine Anwendung auf mehreren Client-PCs laufen, ergeben sich ein paar Sachen, die man bedenken muß. Wie Du schon sagtest könnte es beim Mehrbenutzerbetrieb Probleme hinsichtlich Änderungen anderer Benutzer geben. Dies könnte man z.B. mit einem Versions-Attribut oder einem Timestamp in der Datenbank umgehen, wo bei jedem Schreibzugriff geprüft wird, ob die aktuelle Versionsnummer noch mit dem letzten Stand übereinstimmt. Stimmt sie nicht überein, wäre der Datensatz in dem Moment für den Benutzer gesperrt, ähnlich wie Access es macht.

Dann ist da noch die Frage, _wann_ die Daten ausgelesen werden. Hast Du z.B. einen Tree, der alle Standorte und Gebäude eines Unternehmens auflistet, müßte man eigentlich hingehen und bei jeder Treenavigation durch den Benutzer eben den kompletten Tree neu zu laden.

Denn wenn man den Tree beim Anwendungsstart komplett aufbaut und irgendwann geht ein anderer Benutzer her und legt ein neues Gebäude an, kriegen das die anderen Benutzer nicht mit, es sei denn, sie starten die Anwendung neu, oder der Tree wird eben refreshed bzw. neu aufgebaut. Lädt man aber nun den Tree ständig komplett neu, geht das natürlich zu Lasten der Performance.

Muss ich wirklich dann alles neuladen oder nur die Änderungen? usw ...
Also _alles_ neu laden braucht man nicht. Habe ich jetzt einen Tree, der sich aus einer Liste zusammensetzt, muß ich eben diese komplette Liste neu laden. Habe ich jetzt eine View, die einen Mitarbeiter anzeigt, brauche ich nur das jeweilige Mitarbeiter-Objekt neu zu laden.
 
Zurück
Oben