vendredi 18 janvier 2019

JPA & Hibernate : equals et hashCode

L’égalité entre les objets est une notions importante lorsque'on utilise des ORM comme Hibernate et pas que pareil pour les TreeSet et TreeMap étant implémenté sous forme d'arbre binaire, il doit comparer les objets entre eux pour les organiser en implémentant comparable et/ou comparator .



Hibernate utilise la notion de proxy (Voir la définition sur Wikipedia) .
Quand nous avons deux objets en mémoire, nous devrons faire attention à ne pas comparer un proxy avec l’objet qu’il proxyfie.

Pour comparer sémantiquement deux instances, la classe java.lang.Object est pourvue de la méthode equals que toute classe est libre de redéfinir en respectant les règles suivantes :

  • l'implémentation doit être réflexive, symétrique, transitive et cohérente, il est généralement nécessaire de redéfinir hashCode lorsque equals est implémentée.
  •  les objets égaux doivent avoir des codes de hachage égaux

Aucun commentaire:

Enregistrer un commentaire

to criticize, to improve