Maison > Java > javaDidacticiel > Comment implémenter hashCode() et equals() pour les entités JPA sans rompre l'identité ?

Comment implémenter hashCode() et equals() pour les entités JPA sans rompre l'identité ?

Susan Sarandon
Libérer: 2024-11-26 04:05:07
original
716 Les gens l'ont consulté

How to Implement hashCode() and equals() for JPA Entities Without Breaking Identity?

Le dilemme JPA hashCode() / equals() : une perspective neutre de JPA

Implémentation de hashCode() et equals() pour JPA les entités peuvent présenter plusieurs défis, notamment en matière de conformité au contrat et de détection d’identité. Abordant le problème d'un point de vue neutre en matière de mise en œuvre de JPA (en particulier avec EclipseLink à l'esprit), cet article explore les options disponibles et leurs implications.

Implémentations possibles avec des compromis

  1. Object.hashCode() et Object.equals() : Cette valeur par défaut la mise en œuvre garantit la conformité du contrat mais ne parvient pas à identifier les objets identiques et peut entraîner des problèmes avec les entités détachées.
  2. hashCode()/equals() par clé primaire : Adhère au hashCode()/equals( ) mais rompt l'identité des entités détachées en raison de valeurs de clé primaire transitoires.
  3. hashCode()/equals() par Business-Id : Fournit une identité correcte mais peut quand même rompre le contrat et causer des problèmes avec les clés étrangères.

Question et recommandations

Question 1 : Des options ou des compromis ont-ils été négligé ?

Réponse : L'article référencé « Ne laissez pas Hibernate voler votre identité » suggère que l'attribution d'ID d'objet lors de l'instanciation simplifie l'identité de l'objet et réduit la complexité du code.

Question 2 : Quelle option est recommandé ?

Réponse : La solution suggérée dans l'article recommande d'attribuer des ID d'objet lors de l'instanciation, plutôt que de s'appuyer sur les implémentations JPA. Cette approche garantit la cohérence et simplifie la gestion des identités.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal