La serialización se utiliza para la persistencia en Java. Puede estar bien persistir algunos objetos usando la serialización. Pero, para una gran cantidad de objetos, ORM, base de datos, etc. podrían ser mejores. Parece que la serialización es útil solo para trabajos pequeños. Tal vez yo estoy equivocado. Entonces, ¿cuáles son las ventajas de la serialización sobre los métodos de no serialización? ¿Cuándo debe usarse y cuándo debe evitarse?
Esta pregunta me vino a la mente después de ver el artículo de DZone ¿Es mala la serialización de objetos?
Y estas son las líneas que dieron lugar a mi pregunta:
Si observa Java y sus objetos de sesión, se utiliza la serialización de objetos puros. Suponiendo que una sesión de aplicación es de corta duración, es decir, como máximo unas pocas horas, la serialización de objetos es simple, bien soportada y está integrada en el concepto Java de una sesión. Sin embargo, cuando la persistencia de los datos es durante un período de tiempo más largo, posiblemente días o semanas, y tiene que preocuparse por las nuevas versiones de la aplicación, la serialización se vuelve malvada rápidamente. Como cualquier buen desarrollador de Java sabe, si planea serializar un objeto, incluso en una sesión, necesita un ID de serialización real (serialVersionUID), no solo un 1L, y necesita implementar la interfaz serializable. Sin embargo, la mayoría de los desarrolladores no conocen las reglas reales detrás del proceso de deserialización de Java. Si su objeto ha cambiado, más que simplemente agregar campos simples al objeto, es posible que Java no pueda deserializar el objeto correctamente incluso si la ID de serialización no ha cambiado. De repente, ya no puede recuperar sus datos, lo cual es inherentemente malo.
Ahora, los desarrolladores que lean esto pueden decir que nunca escribirían código que tuviera este problema. Eso puede ser cierto, pero ¿qué pasa con una biblioteca que usa o algún otro desarrollador que ya no es empleado de su empresa? ¿Puede garantizar que este problema nunca sucederá? La única forma de garantizarlo es utilizar un método de serialización diferente.
1L
' no es correcta.