[linux-l] Was mich an WebApplikationen immer und?immerwiderAnkotzt...
Rocco Rutte
pdmef at gmx.net
Sa Aug 2 17:05:49 CEST 2008
Hi,
* Olaf Radicke wrote:
>Am Samstag 02 August 2008 12:29:49 schrieb Rocco Rutte:
>> >Hibernate wird das _irgendwie_ können. Aber das Ergebnis wird der Benutzer
>> >nicht mehr abwarten, weil der glaubt, das Programm hätte sich aufgehängt.
>> >(Mit Ausnahme fielleicht von Entwicklern die Eclipse-IDE benutzen. Die
>> > sind waren gewohnt.)
>> Warum? Wie kommst du zu der Behauptung wenn du dir Hibernate nur
>> theoretisch angesehen hast?
>Das ist meine Spekulation. Wie es sich bei dir und Peter schon erahnen lässt,
>wird das Programm bzw. Framework - für meinen Geschmack - einfach zu fiel
>selber tun. U.U. werden riesige Datenmengen über Tcp/IP gepumt in XML
>gewandelt in Klassen-Instanzen geparst, in endlosen Schleifen im Datenmüll
>herum gewühlt, von dem man letztlich nur ein Teil braucht.
Das glaube ich beides nicht so recht.
Erstens ist es Sache des DB-Treibers die Daten übers Netz zu schaufeln
und das wird wohl kein XML sondern proprietäre und binär sein. Und es
wird nicht in Klasseninstanzen geparst. Es gibt ganz normal ResultSets
und mit getObject() und Co. werden die Members gesetzt. Genauso als
würde man es von Hand machen nur eben mit einem Abstraktionslayer
dazwischen.
Zweitens glaube ich auch nicht, dass Hibernate mit den Daten lokal
rechnet und Aggregation lokal implementiert. Ich würde eher darauf
tippen, dass sie über mehrere einfache SELECTs ein paar Keys
rausbekommen, um parametrisiert weitere Queries zu bauen, um an das
Ergebnis zu kommen. Einfachere Queries können dem Planner zum Beispiel
entgegenkommen, wenn man oft wiederholt die selben Queries mit anderen
Parametern fährt kann man sich das Parsen sparen und nur
PreparedStatements nehmen und cachen.
>Ich habe schon gelesen, das Hibernate so clever ist, die referenzierten
>Klassen erst aus der DB zu ziehen, wenn sie tatsächlich abgerufen
>werden.
Ja, ich glaube die parsen die Annotations der Klasse oder XML und
erzeugen selbst über Bytecode Klassen mit der DB-Anbindung einerseits
und den Klassen andererseits als Bean. Wenn man Listen hat für
Referenzen, dann werden Java's List oder Set durch Hibernate-Varianten
im Bytecode ersetzt, die die DB-Anbindung machen. Glaube ich zumindest
dem Debugger entnommen zu haben... :)
MfG, Rocco
Mehr Informationen über die Mailingliste linux-l