mrjerk: Seriazible

Beitrag lesen

Hallo,

Sage ich dann mit Seriazible nur, dass man mit Setter und Gettern auf all meine Attribute zugreifen kann und somit die Attribute später problemlos exportieren? Irgendwas muss ja hier Geschehen?

Vergleiche die Java-Doku:

[...]
The serialization interface has no methods or fields and serves only to identify the semantics of being serializable.
[...]

Du kennzeichnest damit nur ein serialisierbares Objekt. Wie dieses serialisiert wird, bliebt Dir überlassen (Du kannst z.b. eigene Methoden für writeObject und readObject definieren).

Nicht immer ist es sinnvoll, eine Klasse serialisierbar zu gestalten
(Denke an sowas wie eine offene Datenbankverbindung - die kannst Du ja nicht einfach in eine Textdatei packen), deswegen sind nicht alle Objekte "automatisch" serialisierbar, sondern müssen als solche gekennzeichnet werden.

Wie ich aber von meinen Kommilionen gesehen hatte, dass sie Ihre Projekte so gelöst hatten, dass manche eine statische Klasse hatten, um eine Datenbankverbindung aufzubauen. Manche hatten es so gelöst, dass bei einem Login eine Datenbankverbindung aufgebaut wird und erst beim Login wieder abgebaut.

Generell ist es schon sinnvoll, die Datenbankverbindung statisch zu machen (in einem Singleton o.ä.) und dann diese offen zu halten, statt für jeden Request immer eine neue Verbindung zu öffnet. Damit spart man sich den Overhead für den Verbindungsaufbau.
Allerdings bekommt man, wenn man nur eine Verbindung vorsieht, ggf. Probleme, wenn sehr viele Requests abgearbeitet werden müssen - dann laufen diese alle über diese einzige Datenbankverbindung, was ggf. zu Performance-Problemen führt, weil die Requests dann immer warten müssen, bis die DB-verbindung wieder frei ist.

Daher auch die von Dir angesprochene Connection-Pool-Idee: Eine Zahl von Datenbankverbindungen wird (statisch) aufgebaut und dann offen gehalten.
Durch dieses Konzept gibt es keinen Overhead für den Verbindungsaufbau, trotzdem kann eine gewisse Anzahl von Connections parallel genutzt werden, und ein Request muss nicht so lange auf das Frei-Werden der Verbindung warten.