4
respostas

Olá, percebo que nas classes entidades não foram implementadas a interface Serializeble, nem implementando métodos equals e hashcode, isso pode gerar algum problema em um ambiente de produção, ou o hibernate consegue lidar com este tipo de situação?

4 respostas

Oi José, tudo bem ?

Por padrão não, geralmente que precisa dessas informações são os servidores de aplicação para conseguir serializar e desserializar os objetos, para funcionamento interno.

Oi José tudo bem?

Em JPA é uma boa pratica sempre implementar a interface Serializable, pois em alguns momentos (quando usa nativa Query por exemplo) é obrigatório a sua implementação, Já o equals e hashcode só é obrigatório quando você precisa mapear uma chave composta.

Olá pessoal, andei dando uma pesquisa a este respeito e vi que é importante reescrever os métodos equal e hashcode pelos seguintes motivos: No modelo objeto relacional quem me garante que o objeto_1 é igual ao objeto_2 na aplicação?

Exemplificando, imagine que eu crie um objeto do tipo Pessoa chamado pessoa01 e este objeto se refira ao José com código 01, todavia foi necessário eu criar uma pessoa02 que também se refere ao José que tem no DB o seu código número 01.

Se eu comparar se o pessoa01 é equal a pessoa02 ele me retornará false, isso estaria errado visto que são a mesma pessoa.

Assim vi a necessidade de reescrever o método equal para que ele compare o código dos objetos pessoa, ou seja pessoa01.codigo e pessoa02.codigo, pois o código é a chave primaria no DB (Não repetindo), dai sim ele me retorna true.

Já o hashcode me auxilia no desempenho de consulta na tabela hash. Alguém tem um exemplo onde podemos perceber a diferença de performance?

Muito obrigado pelo retorno,

Atenciosamente,

Gonzaga.

Oi Gonzaga, como vai?

Realmente essa é a aplicação dos métodos equal e hashcode, mas só para deixar claro, o JPA não exige que esses métodos sejam rescritos.