Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Para que Serializar objetos?

Ainda não entendi qual é o real motivo de se Serializar um objeto.

Pelo que entendi, ele é gravado na memória, mas qual a vantagem disso, se por exemplo, eu usar este objeto para ser persistido em banco?

Além disso, minha classe fica resistente a mudanças por causa do SerialUID? Vi que toda manutenção gera uma Exception por conta da geração de um novo ID.

Se o objetivo é versionar, não é mais prático controlarmos isso por um SCM, como o Git?

1 resposta
solução!

Olá Gabriel.

Pequenas soluções podem nem sequer usar banco, usando apenas arquivos locais, na memória permanente. Mesmo que use um banco, podem haver configurações locais que você não quer guardar em ficheiros txt, interpretáveis por humanos.

O próprio banco pode guardar o objeto na sua forma serializada, e não em dicionários de dados legíveis por humanos.

Também na comunicação entre diferentes computadores ou programas, pode ser necessário enviar os objetos propriamente ditos, logo serializá-los torna-se muito útil.

O SerialUID serve para que os programadores mantenham a sanidade (resolvendo pepinos de incompatibilidade ou mitigando-os) entre a gestão de diferentes versões que você não tem como controlar devido à não atualização por parte dos usuários ou outros desenvolvedores na outra ponta. Repare que, como o professor exemplificou, definir o SerialUID não previne o problema de incompatibilidade, mas permite identificar o problema e até em tempo real as versões mais recentes dos programas poderão se adaptar e deserializar/serializar para versões mais antigas.

Versionamento de código, por meio de Git, é imprescindível para você manter diferentes versões do seu código, mas não tem como o versionador gerir as versões que os usuários e outros desenvolvedores estão usando do seu código (compilado ou não) e dos objetos que eles serializam e deserializam.

Abr, José