Wenn wir nur über Persistenz sprechen, Serializablewird dies nicht benötigt. Es ist jedoch eine bewährte Methode, die Entitäten zu erstellen Serializable.
Wenn wir aussetzen domain/ entitiesObjekte direkt an die Präsentationsschicht ausgesetzt ist , anstelle der Verwendung von DTO, in diesem Fall müssen wir implementieren Serializable. Diese Domänenobjekte können zu HTTPSessionCaching- / Optimierungszwecken gespeichert werden. Eine http-Sitzung kann serialisiert oder geclustert werden. Und es ist auch für die Übertragung von Daten zwischen JVM-Instanzen erforderlich.
Wenn wir die DTOPersistenzschicht und die Serviceschicht entkoppeln, markiert das Markieren der Domänenobjekte als Serializablekontraproduktiv und würde das " encapsulation" verletzen . Dann wird es ein Anti-Muster.
Zusammengesetzte Bezeichner
Die Primärschlüsselklasse muss serialisierbar sein.
POJO-Modelle
Wenn eine Entitätsinstanz remote als getrenntes Objekt verwendet werden soll, muss die Entitätsklasse die SerializableSchnittstelle implementieren .
Cache
Wenn Sie eine clusteredzweite Ebene implementieren cache, müssen dies auch Ihre Entitäten sein serializable. Der Bezeichner muss sein, Serializableda dies eine JPA-Anforderung ist, da er identifiermöglicherweise als Schlüssel für einen Cache-Eintrag der zweiten Ebene verwendet wird.
Und wenn wir Entitäten serialisieren, stellen Sie sicher, dass Sie explizit den serialVersionUIDModifikator für den privaten Zugriff angeben. Wenn eine serializableKlasse a nicht explizit deklariert serialVersionUID, berechnet die Serialisierungslaufzeit einen Standardwert serialVersionUIDfür diese Klasse basierend auf verschiedenen Aspekten der Klasse, wie in Java (TM) Object Serialization Specification beschrieben. Die Standardberechnung serialVersionUIDreagiert sehr empfindlich auf Klassendetails, die je nach Compiler-Implementierung variieren können, und kann daher InvalidClassExceptionswährend der Deserialisierung zu unerwarteten Ergebnissen führen .