[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