RMI RMI + Hibernate + DTO

mfernau

Bekanntes Mitglied
Hallo,

ich möchte für meinen Betrieb ein kleines Programm zur Support-Unterstützung schreiben. Damit sollen Telefonate protokolliert, Tickets angelegt und andministriert und natürlich der Kundenstamm gepflegt werden. Ich denke dabei an das Zusammenspiel von RMI mit Hibernate. RMI brauche ich, weil ich mehrere Mitarbeiter an den selben Daten arbeiten lassen muss und jeder von Änderungen in "Echtzeit" profitieren soll. Daher kann ich leider nicht einfach nur jedem eine Hibernate-Session zuer Verfügung stellen. Die Daten würden sich ja nicht synchronisieren werden.

Bei meinen Recherchen über Hibernate in Verbindung mit RMI bin ich natürlich schon auf die allseits bekannte Problematik der LazyLoadingException gestossen. Das ganze ist natürlich extrem schade. Ich bin jetzt wohl gezwungen die halben Hibernate-Proxyklassen ein zweites mal manuell für DTO anzulegen, um die ganze Hibernate-Schicht beim Server zu belassen und den Client nur "dumme" Beans zur Verfügung zu stellen.
Gibt es hierzu irgend eine Art Hilfestellung oder Design-Pattern um mir die Arbeit zu erleichtern? Irgendwie kommt mir das alles extrem "unschön" vor. Ich lasse mir mit Hilfe von Reverse-DB-Engineering die Hibernate-Proxyklassen erzeugen und muss dann doch wieder Hand anlegen um dutzende von DTO-Klassen für die Übertragung zu erzeugen. Von der ganzen Synchronisation der DTO-Klassen auf dem Server mit den Hiberante-Proxyklassen mal ganz zu schweigen (kopieren der Daten 'zu' und 'von' den DTO-Objekten beim get, update oder create). Da sind doch Fehler quasi vorprogrammiert (z.B. vergessen von Feldern beim Umkopieren).
Da holt man sich so ein "Schlachtschiff" von Persistenz-API mit einem >7MB Footprint ins Haus und benutzt sie dann quasi nur noch um ein paar billige DB Lese- und Schreiboperationen durchzuführen. Ich muss doch hier irgendwie auf dem Holzweg sein... ???:L :bahnhof:
Wenn das alles wirklich so stattfinden muss, dann kann ich doch gleich nur die DTO-Klassen benutzen und native JDBC-Aktionen durchführen. So spare ich mir dann wenigstens die ganze umkopiererei Proxy<->DTO und den ganzen Hibernate-Ballast.

Bitte um Aufklärung..

Besten Dank und Grüße
Martin
 

mvitz

Top Contributor
Normalerweise sollte es reichen, wenn du einfach kein LazyLoading nutzt.
Ansonsten ist Dozer eine Alternative oder du nutzt eben kein RMI sondern ein anderes Format.
 

Ähnliche Java Themen

Neue Themen


Oben