Si nous parlons simplement de persistance, ce Serializable
n'est pas nécessaire, mais il est préférable de créer les entités Serializable
.
Si nous exposons domain
/ entities
objets 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 HTTPSession
fins 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 DTO
pour 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' Serializable
interface.
Cache
De plus, si vous implémentez un clustered
deuxième niveau, cache
vos entités doivent l'être serializable
. L'identifiant doit être Serializable
parce que c'est une exigence JPA car il identifier
peut ê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 serialVersionUID
un modificateur d'accès privé. Parce que si une serializable
classe ne déclare pas explicitement a serialVersionUID
, alors le runtime de sérialisation calculera une serialVersionUID
valeur 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 serialVersionUID
calcul 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 InvalidClassExceptions
lors de la désérialisation.