Si solo hablamos de persistencia, Serializableno es necesario Pero es la mejor práctica hacer las entidades Serializable.
Si estamos exponiendo domain/ entitiesobjetos directamente expuestos a la capa de presentación, en lugar de usar DTO, en ese caso necesitamos implementar Serializable. Estos objetos de dominio se pueden almacenar con HTTPSessionfines de almacenamiento en caché / optimización. Una sesión http puede ser serializada o agrupada. Y también es necesario para transferir datos entre JVMinstancias.
Cuando usamos DTOpara desacoplar la capa de persistencia y la capa de servicio, marcar los objetos del dominio como Serializablecontraproducentes y violaría el " encapsulation". Entonces se convierte en un antipatrón.
Identificadores compuestos
La clase de clave primaria debe ser serializable.
Modelos POJO
Si una instancia de entidad se va a utilizar de forma remota como un objeto separado, la clase de entidad debe implementar la Serializableinterfaz.
Caché
Además, si está implementando un clusteredsegundo nivel, cacheentonces sus entidades deben serlo serializable. El identificador debe ser Serializableporque es un requisito de JPA, ya que identifierpodría usarse como la clave para una entrada de caché de segundo nivel.
Y cuando serializamos entidades, asegúrese de proporcionar un serialVersionUIDmodificador de acceso privado explícito . Porque si una serializableclase no declara explícitamente a serialVersionUID, entonces el tiempo de ejecución de serialización calculará un serialVersionUIDvalor predeterminado para esa clase en función de varios aspectos de la clase, como se describe en la Especificación de serialización de objetos Java (TM). El serialVersionUIDcálculo predeterminado es muy sensible a los detalles de la clase que pueden variar según las implementaciones del compilador y, por lo tanto, pueden resultar inesperados InvalidClassExceptionsdurante la deserialización.