Por que devemos implementar Serializable e sobrescrever os métodos equals e hashCode nas Entity JPA

Beleza galera, essa é meu primeiro topico aqui no GUJ, espero que consiga me espresar pra não confundir a galera.

Vamos lá.

Gostaria de saber porque devemos implementar o Serializable e sobrescrever os métodos equals e hashCode nas Entity JPA.
Att.

César Vale

Eu acho que essa do Serializable não é realmente necessário. Pode depender bastante do seu contexto.
Dá uma olhada neste link.

O equals e o hashCode (resumidamente) testam a igualdade entre dois objetos. Se você quer comparar 2 valores do tipo inteiro (int), você usa o “==”. Por outro lado, se você quiser comparar dois objetos do tipo Integer, você teria de usar equals (if um.equals(dois) … ). Um exemplo do hashCode bem básico é o seguinte: imagine que você tem arquivos XML e quer comprar um arquivo a com um b. Você poderia usar o equals ou o hashCode. Se você usar o hashCode, o valor do hashCode do a vai ser idêntico ou valor do hashCode de b se eles forem ‘o mesmo arquivo com um nome diferente’ ou coisa do tipo.

Conforme o André disse uma entidade não precisa ser Serializable. Porém toda PK precisa ser Serializable.

Além disso, quando você utiliza uma aplicação distribuída você precisa serializar os DTOs.