En Java, la persistance avec Hibernate gavin suggère que nous utilisions une clé professionnelle pour la comparaison d'égalité. Les clés professionnelles peuvent non seulement impliquer des comparaisons de champs multiples, mais il n'y a aucune garantie que la sémantique de la clé professionnelle "parfaite" ne changera pas à l'avenir. Nous vivons dans un monde non idéal et les exigences commerciales et les lois changent très fréquemment. Dans un tel cas, nous nous retrouverons avec des données dans la base de données stockées avec plusieurs sémantiques de clés métier. Je veux diviser le problème en deux parties :
-
Lorsque nous traitons strictement des objets persistants ou détachés.
-
Quand nous traitons des objets transitoires.
-
Je ne vois toujours pas d'inconvénient à utiliser une clé de substitution pour l'égalité et le code de hachage si nous traitons des objets persistants et détachés. Deux objets persistants ou détachés sont égaux s'ils ont la même clé primaire. Est-ce une erreur de supposer cela ?
-
Lorsque nous traitons des objets transitoires, nous pouvons utiliser la sémantique de la clé métier pour comparer les objets et disposer d'une stratégie de fusion si vous essayez de faire persister deux objets transitoires avec la même clé métier mais des valeurs différentes dans l'attribut remainder.
Dans les applications à lecture intensive, où la plupart des transactions sont des lectures/mises à jour, cette stratégie devrait donner de meilleures performances.