Moin!
Kann ich mir gar nicht vorstellen, dass Java im HTTP-Umfeld (ich meine jetzt selbstverständlich im Server!) Instanzen eines Objektes im Speicher hält, dessen Aufgaben erfüllt sind. Wozu sollte es das tun? Woher sollte es wissen, dass es gleich nochmal benötigt wird.
Szenario:
Nehmen wir doch einfach mal das Beispiel eines simplen Aufrufzählers. Der Client versendet _keinerlei_ Kennungen. Die IP des Client wird zwischen den Requests wild gewechselt. Wie soll Java hier wissen, dass das beim ersten Aufruf instatiierte Objekt beim siebten und beim 56ten nochmal benutzt werden soll. Die Requests dazwischen kamen von anderen Clients, oder auch nicht...
Klar, in so einem Szenario ist das Aufbewahren ja auch sinnlos... zumindest für einen Teil. Die DB-Connection zum Hochzählen behälst du nämlich doch persistent im Speicher, oftmals sogar in Form eines Connection-Pools, weil die potentielle Anzahl von Clients, die zu bedienen sind, größer ist als die Anzahl der DB-Connections, welche aber nicht permanent pro Client benötigt werden.
Und gerade im Szenario eines eingeloggten Users mit Session-ID ist das permanente bzw. für die Lebensdauer der Session dauernde Bereithalten von User-Daten im Speicher nicht komplett idiotisch. Der User wird bei Login einmal aus der DB geladen, alle Interaktionen laufen ausschließlich über das Java-Programm, alle Updates des Users werden zeitnah wieder in die DB geschrieben - da ist dann keine Notwendigkeit, bei jedem Request den aktuellen User erneut aus der DB zu laden.
So ein Ansatz ist allerdings auch deutlich herausfordernder, weil man sich jetzt eben über ein Langzeit-Verhalten seiner Applikation Gedanken machen muss. Und wahnsinnige Performance gewinnt man damit auch nicht zwingend, dazu sind Skriptsprachen wie PHP dann doch schon ziemlich gut optimiert, und man kann, wenn das Umfeld es erfordert, zahlreiche "kostenlose" Performanceoptimierungen hinzuziehen, die keine Änderung am Code erfordern. Und natürlich auch Caching einfügen (das ist dann aber nicht mehr "kostenlos", weil es eine Analyse des Nutzungsverhaltens erfordert).
- Sven Rautenberg