La sérialisation est utilisée pour la persistance en Java. Il peut être correct de conserver quelques objets en utilisant la sérialisation. Mais, pour un grand nombre d'objets, ORM, Database etc pourrait être mieux. Il semble que la sérialisation ne soit utile que pour les petits travaux. Peut-être que je me trompe. Alors, dites-moi quels sont les avantages de la sérialisation par rapport aux méthodes sans sérialisation? Quand faut-il l'utiliser et quand faut-il l'éviter?
Cette question m'est venue à l'esprit après avoir vu l'article de DZone Is Object Serialization Evil?
Et ce sont les lignes qui ont donné lieu à ma question:
Si vous regardez Java et ses objets de session, la sérialisation d'objets pure est utilisée. En supposant qu'une session d'application soit de courte durée, ce qui signifie au plus quelques heures, la sérialisation d'objet est simple, bien prise en charge et intégrée au concept Java d'une session. Cependant, lorsque la persistance des données s'étend sur une période plus longue, peut-être des jours ou des semaines, et que vous devez vous inquiéter des nouvelles versions de l'application, la sérialisation devient rapidement un problème. Comme tout bon développeur Java le sait, si vous prévoyez de sérialiser un objet, même dans une session, vous avez besoin d'un véritable ID de sérialisation (serialVersionUID), pas seulement d'un 1L, et vous devez implémenter l'interface Serializable. Cependant, la plupart des développeurs ne connaissent pas les vraies règles derrière le processus de désérialisation Java. Si votre objet a changé, plus que l'ajout de simples champs à l'objet, il est possible que Java ne puisse pas désérialiser correctement l'objet même si l'ID de sérialisation n'a pas changé. Du coup, vous ne pouvez plus récupérer vos données, ce qui est intrinsèquement mauvais.
Maintenant, les développeurs qui lisent ceci peuvent dire qu'ils n'écriront jamais de code qui aurait ce problème. C'est peut-être vrai, mais qu'en est-il d'une bibliothèque que vous utilisez ou d'un autre développeur qui n'est plus employé par votre entreprise? Pouvez-vous garantir que ce problème ne se produira jamais? La seule façon de garantir cela est d'utiliser une méthode de sérialisation différente.
1L
» n'est pas correcte.