[QUOTE=SlaterB][QUOTE=maki;97626]
Du erzeugst eine transiente Entity, packst sie in ein HashSet.
Du aenderst nun einige Werte dieser transienten Entity… und nun?
[/quote]
eben hieß es noch
was denn nun?
[/quote]
Beides!
Wenn dein equals/hashcode auf verggleich von Attributen basieren, aendert sich das Ergebnis schon durch aendern eines Attributes das fuer equals/hashcode herangezogen wird.
[quote=SlaterB;97628]dass diese Methoden bei Änderung der Attribute nicht funktionieren ist ja nun allgemein bekannt,
für den Anlegevorgang von Datenbank-Entities aber nicht gerade üblich (obwohl das natürlich ein weites Feld ist)[/quote]
Das ist absolut ueblich, alles andere waere Quark, vor allem mit relationalen DBs.
Man kann doch nicht nach dem aendern des Nachnahmens einer Person (Heirat, Scheidung und Wiederannahme des Maechennamens, Adoption, Namensaenderung weil nun Kuenstlername…) nicht die alte Person loeschen und eine neue anlegen, die „alte“ Person wird ja schon von zig anderen Tabellen referenziert.
[quote=SlaterB;97628]hinsichtlich dieser einen Frage, Id dazu oder nicht, funktionieren equals/hashcode auf Attributen, evtl. optimiert mit Id-Vergleich,
(spart nur Zeit, ändert nichts, unter der weiteren Annahme, dass es keine DB-Objekten gleichen Attributs-Inhalts gibt, keine Doppelten in der DB)
Zustimmung?[/quote]
Nein, keine Zustimmung!
Abgesehen davon das fachliche Schluessel (Attributwerte) keine gute Sache in RDBMS sind, muss man eben eine bestehende Entity aendern koennen, nciht einfach nur die alte loeschen und eine neue Anlegen.
Falls ich dich richtig verstanden habe natuerlich…
Eben nicht.
Sessions bzw. EntityManager sind ja nicht immer „offen“, deswegen kann man eben auch dieselbe Entity in verschienden Objekten zur Laufzeit in verschiedenen Zustaenden haben (transient, persistiert, geaendert, usw.).
Das ist dieselbe Frage wenn ORM im Spiel sind.
Irgendwie muss ja auch das ORM herausfinden wenn es sich um dieselbe Entity handelt (nutzt du eine IdentityMap: P of EAA: Identity Map).
Objektreferenzen sind da nutzlos, koennte aus einer anderen VM serialisiert werden, oder eben nur aus einer anderen Session, etc. pp.
[quote=SlaterB;97628]ein equals hinsichtlich Attribute ist bei Änderung der Attribute natürlich so sinnvoll wie ein equals auf Id hinsichtlich Änderung der Id,
warum darüber überhaupt sprechen?[/quote]
Eben, die ID darf sich eigentlich niemals aendern, egal wann & wo.
„Gleichheit“ ueber Attribute gehen nur bei ValueObjects, also bei Objekten deren Identitaet sich nur durch die Attrubite definiert, JPA bezeichnet diese als Embeddable, diese muessen immer direkt in Entities abgelegt werden.
[quote=SlaterB;97628]uch bei dem Zwillingsbeispiel, abgesehen von unrealistischen Fall gleicher Vornamen, kann man noch mit Geburtsuhrzeit oder schlicht Nummerierung 1/2 unterscheiden,
und sich dennoch dafür interessieren dass nicht drei Einträge angelegt werden[/quote]
Nummerierung ist auch nur eine Kruecke, der erfolglose Versuch eindeutig zu sein ohne ID 