Die Serialisierung wird für die Persistenz in Java verwendet. Es kann in Ordnung sein, einige Objekte mithilfe der Serialisierung beizubehalten. Bei einer großen Anzahl von Objekten sind ORM, Datenbank usw. möglicherweise besser. Es scheint, dass die Serialisierung nur für kleine Aufträge nützlich ist. Vielleicht irre ich mich. Erzählen Sie mir bitte, welche Vorteile die Serialisierung gegenüber Nicht-Serialisierungsmethoden hat. Wann sollte es angewendet und wann vermieden werden?
Diese Frage kam mir in den Sinn, nachdem ich den DZone-Artikel Is Object Serialization Evil gesehen hatte.
Und dies sind die Zeilen, aus denen meine Frage hervorging:
Wenn Sie sich Java und seine Sitzungsobjekte ansehen, wird die reine Objektserialisierung verwendet. Unter der Annahme, dass eine Anwendungssitzung relativ kurzlebig ist, dh höchstens einige Stunden, ist die Objektserialisierung einfach, gut unterstützt und in das Java-Konzept einer Sitzung integriert. Wenn die Datenpersistenz jedoch über einen längeren Zeitraum, möglicherweise Tage oder Wochen, andauert und Sie sich über neue Versionen der Anwendung Gedanken machen müssen, wird die Serialisierung schnell schlecht. Wie jeder gute Java-Entwickler weiß, benötigen Sie eine echte Serialisierungs-ID (serialVersionUID) und nicht nur ein 1L, wenn Sie ein Objekt auch in einer Sitzung serialisieren möchten, und Sie müssen die Serializable-Schnittstelle implementieren. Die meisten Entwickler kennen jedoch die tatsächlichen Regeln für den Java-Deserialisierungsprozess nicht. Wenn sich Ihr Objekt geändert hat, können Sie dem Objekt nicht nur einfache Felder hinzufügen. Es ist möglich, dass Java das Objekt nicht korrekt deserialisieren kann, auch wenn sich die Serialisierungs-ID nicht geändert hat. Plötzlich können Sie Ihre Daten nicht mehr abrufen, was von Natur aus schlecht ist.
Mögen Entwickler, die dies lesen, vielleicht sagen, dass sie niemals Code schreiben würden, der dieses Problem hätte. Das mag stimmen, aber was ist mit einer Bibliothek, die Sie verwenden, oder einem anderen Entwickler, der nicht mehr in Ihrem Unternehmen beschäftigt ist? Können Sie garantieren, dass dieses Problem niemals auftreten wird? Die einzige Möglichkeit, dies zu gewährleisten, ist die Verwendung einer anderen Serialisierungsmethode.
1L
" ist nicht korrekt.