{TWBSCR}
Sie müssen aus verschiedenen Gründen unbedingt sicherstellen, dass Ihre Primärschlüssel korrekt gesetzt werden.
Erstens wird die Verarbeitung von Schlüsselsignaturen immer aufwändiger, je mehr Eigenschaften als primär markiert werden. Wenn alle Felder für ein Benutzerobjekt als primär markiert wurden, muss das System für jeden Benutzer auf jede einzelne dieser Eigenschaften zugreifen und eine Signatur verarbeiten, die die Werte für jede einzelne Eigenschaft enthält. Das Problem würde noch verstärkt, wenn ein Feld auf ein anderes Objekt verweist. Generell sollten Primärschlüssel mit Clientdaten daher den gleichen Regeln folgen wie Pimärschlüssel für Datenbanken: der effizienteste Schlüssel ist ein einzelnes Feld, vorzugsweise ein Integer. Komplexere Schlüssel, einschließlich des standardmäßig generierten, bei dem jedes einzelne Feld als primär markiert ist, können zwar als Mindestschlüssel verwendet werden, die Leistung ist jedoch erheblich langsamer.
Zweitens müssen Sie Verweisschleifen in Primärattributen vermeiden. Angenommen, Sie haben ein Benutzerobjekt 'User', dem eine Adresse 'Address' zugeordnet ist, und diese Adresse enthält einen Zeiger, der zurück auf das Benutzerobjekt verweist. Wenn user.address ein primäres Feld ist und address.user ebenfalls, tritt beim Definieren der Identität dieser beiden Objekte eine Endlosschleife auf. Dies ist ein intuitiver Ansatz, es kann jedoch problematisch sein, im Code die Kontrolle darüber zu behalten. Tritt dieser Fall ein, wird das System weiter funktionieren, so lange die Java-Objekte konsistent sind: das Benutzerobjekt, auf das die Adresse zeigt, ist dasselbe Java-Benutzerobjekt, das auf das Adressenobjekt zeigt, sodass ein einfacher Gleichheitstest für den Objektverweis wie theUser = theUser.getAddress().getUser() den Wert 'true' zurückgibt.
Drittens, und dies ist am schwer wiegendsten, können Probleme auftreten, wenn alle Felder als Primärfelder angesehen werden (die Standardeinstellung) und Sie Änderungen an einem bestimmten Objekt vornehmen. In diesem Fall ginge die bisherige Identität des Objekts verloren. Da alle Felder Teil der Identität sind, geht die Konsistenz der Identität durch Änderungen verloren. Dieses Problem kann auftreten, wenn Sie erweiterte Funktionen des Frameworks nutzen, beispielsweise WebServices, und eigentlich vom Server Aktualisierungen für Objekte erwarten, die jedoch bereits vom Benutzer im Browser geändert worden sein können.
Nutzungsbedingungen |
Feedback
(C) Copyright IBM Corporation 2000, 2005. Alle Rechte vorbehalten.