Si nous parlons simplement de persistance, ce Serializablen'est pas nécessaire, mais il est préférable de créer les entités Serializable.
Si nous exposons domain/ entitiesobjets directement exposés à la couche de présentation, au lieu d'utiliser DTO, Dans ce cas, nous devons implémenter Serializable. Ces objets de domaine peuvent être stockés à des HTTPSessionfins de mise en cache / d'optimisation. Une session http peut être sérialisée ou mise en cluster. Et il est également nécessaire pour le transfert de données entre JVM-instances.
Lorsque nous utilisons DTOpour découpler la couche de persistance et la couche de service, marquer les objets de domaine comme Serializableétant contre-productif et violerait le « encapsulation». Ensuite, cela devient un anti-modèle.
Identifiants composites
La classe de clé primaire doit être sérialisable.
Modèles POJO
Si une instance d'entité doit être utilisée à distance en tant qu'objet détaché, la classe d'entité doit implémenter l' Serializableinterface.
Cache
De plus, si vous implémentez un clustereddeuxième niveau, cachevos entités doivent l'être serializable. L'identifiant doit être Serializableparce que c'est une exigence JPA car il identifierpeut être utilisé comme clé pour une entrée de cache de deuxième niveau.
Et lorsque nous sérialisons des entités, assurez-vous de fournir explicitement serialVersionUIDun modificateur d'accès privé. Parce que si une serializableclasse ne déclare pas explicitement a serialVersionUID, alors le runtime de sérialisation calculera une serialVersionUIDvaleur par défaut pour cette classe en fonction de divers aspects de la classe, comme décrit dans Spécification de sérialisation d'objets Java (TM). Le serialVersionUIDcalcul par défaut est très sensible aux détails de classe qui peuvent varier en fonction des implémentations du compilateur et peuvent donc entraîner des résultats inattendus InvalidClassExceptionslors de la désérialisation.