Wenn wir nur über Persistenz sprechen, Serializable
wird dies nicht benötigt. Es ist jedoch eine bewährte Methode, die Entitäten zu erstellen Serializable
.
Wenn wir aussetzen domain
/ entities
Objekte 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 HTTPSession
Caching- / 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 DTO
Persistenzschicht und die Serviceschicht entkoppeln, markiert das Markieren der Domänenobjekte als Serializable
kontraproduktiv 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 Serializable
Schnittstelle implementieren .
Cache
Wenn Sie eine clustered
zweite Ebene implementieren cache
, müssen dies auch Ihre Entitäten sein serializable
. Der Bezeichner muss sein, Serializable
da dies eine JPA-Anforderung ist, da er identifier
mö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 serialVersionUID
Modifikator für den privaten Zugriff angeben. Wenn eine serializable
Klasse a nicht explizit deklariert serialVersionUID
, berechnet die Serialisierungslaufzeit einen Standardwert serialVersionUID
für diese Klasse basierend auf verschiedenen Aspekten der Klasse, wie in Java (TM) Object Serialization Specification beschrieben. Die Standardberechnung serialVersionUID
reagiert sehr empfindlich auf Klassendetails, die je nach Compiler-Implementierung variieren können, und kann daher InvalidClassExceptions
während der Deserialisierung zu unerwarteten Ergebnissen führen .