A serialização é usada para persistência em Java. Pode ser bom persistir alguns objetos usando serialização. Mas, para um grande número de objetos, ORM, banco de dados etc. pode ser melhor. Parece que a serialização é útil apenas para pequenos trabalhos. Talvez eu esteja errado. Então, diga-me quais são as vantagens da serialização sobre os métodos de não serialização? Quando deve ser usado e quando deve ser evitado?
Esta pergunta veio à minha mente depois de ver o artigo da DZone A serialização de objetos é ruim ?
E estas são as linhas que deram origem à minha pergunta:
Se você observar o Java e seus objetos de sessão, será usada a serialização pura de objetos. Supondo que uma sessão de aplicativo tenha vida útil relativamente curta, ou seja, no máximo algumas horas, a serialização de objeto é simples, bem suportada e incorporada ao conceito Java de uma sessão. No entanto, quando a persistência dos dados ocorre por um longo período de tempo, possivelmente dias ou semanas, e você precisa se preocupar com novos lançamentos do aplicativo, a serialização rapidamente se torna ruim. Como qualquer bom desenvolvedor Java sabe, se você planeja serializar um objeto, mesmo em uma sessão, precisa de um ID de serialização real (serialVersionUID), não apenas de 1L, e precisa implementar a interface Serializable. No entanto, a maioria dos desenvolvedores não conhece as regras reais por trás do processo de desserialização do Java. Se o seu objeto foi alterado, mais do que adicionar campos simples ao objeto, é possível que Java não possa desserializar o objeto corretamente, mesmo que o ID de serialização não tenha sido alterado. De repente, você não pode mais recuperar seus dados, o que é inerentemente ruim.
Agora, os desenvolvedores que estão lendo isso podem dizer que nunca escreveriam código que tivesse esse problema. Isso pode ser verdade, mas e uma biblioteca que você usa ou algum outro desenvolvedor que não é mais empregado por sua empresa? Você pode garantir que esse problema nunca aconteça? A única maneira de garantir isso é usar um método de serialização diferente.
1L
' não está correta.