Si solo hablamos de persistencia, Serializable
no es necesario Pero es la mejor práctica hacer las entidades Serializable
.
Si estamos exponiendo domain
/ entities
objetos 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 HTTPSession
fines de almacenamiento en caché / optimización. Una sesión http puede ser serializada o agrupada. Y también es necesario para transferir datos entre JVM
instancias.
Cuando usamos DTO
para desacoplar la capa de persistencia y la capa de servicio, marcar los objetos del dominio como Serializable
contraproducentes 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 Serializable
interfaz.
Caché
Además, si está implementando un clustered
segundo nivel, cache
entonces sus entidades deben serlo serializable
. El identificador debe ser Serializable
porque es un requisito de JPA, ya que identifier
podría usarse como la clave para una entrada de caché de segundo nivel.
Y cuando serializamos entidades, asegúrese de proporcionar un serialVersionUID
modificador de acceso privado explícito . Porque si una serializable
clase no declara explícitamente a serialVersionUID
, entonces el tiempo de ejecución de serialización calculará un serialVersionUID
valor 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 serialVersionUID
cá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 InvalidClassExceptions
durante la deserialización.