Comment hibernate utilise equals () et hashCode ()?

Si vous chargez une entité à partir de la firebase database et la modifiez d’une manière ou d’une autre, hibernate utilisera-t-il equals / hashCode pour comparer l’état actuel de l’entité avec son instantané afin de déterminer si une mise à jour de SQL doit être effectuée?

Si cela se produit, j’ai une autre question: si égal à retournera vrai, hibernatea-t-il en pensant que l’entité n’a pas changé ou ne tente-t-il pas d’utiliser sa comprasion par défaut (pour être sûr)?

Veuillez consulter Equals et HashCode sur le site Web de la communauté JBoss. De là:

Pour éviter ce problème, nous vous recommandons d’utiliser les atsortingbuts “semi” de votre classe persistante pour implémenter equals () (et hashCode ()). Fondamentalement, vous devez penser que l’identifiant de votre firebase database n’a aucune signification commerciale (rappelez-vous, les atsortingbuts d’identifiant de substitution et les valeurs générées automatiquement sont néanmoins recommandés). La propriété d’identifiant de firebase database ne devrait être qu’un identifiant d’object, et ne devrait être utilisée que par Hibernate. Bien entendu, vous pouvez également utiliser l’identifiant de firebase database comme un identifiant pratique en lecture seule, par exemple pour créer des liens dans des applications Web.

En d’autres termes, Hibernate utilise equals et hashCode pour l’identité, mais pas pour voir si un object a été modifié. Il utilise des comparaisons d’atsortingbut par atsortingbut pour cela.

Pas un expert d’Hibernate, mais vous trouverez peut-être cette section d’éclairage manuel.