Ist es eine gute Praxis, Domänenobjekte als Schlüssel für Maps (oder "get"-Methoden) zu verwenden, oder ist es besser, nur die id des Domänenobjekts zu verwenden?
Es ist einfacher, dies anhand eines Beispiels zu erklären. Nehmen wir an, ich habe eine Person-Klasse, eine Club-Klasse und eine Membership-Klasse (die die anderen beiden verbindet). D.h.,
public class Person {
private int id; // Primärschlüssel
private String name;
}
public class Club {
private String name; // Primärschlüssel
}
public class Membership {
private Person person;
private Club club;
private Date expires;
}
Oder so ähnlich. Jetzt möchte ich eine Methode getMembership
zu Club hinzufügen. Die Frage ist, sollte diese Methode ein Person-Objekt übergeben:
public Membership getMembership(Person person);
oder die id einer Person:
public Membership getMembership(int personId);
Was ist am idiomatischsten, was ist am bequemsten, was ist am passendsten?
Edit: Viele sehr gute Antworten. Ich habe mich dafür entschieden, die id nicht zu offenbaren, da die "Person" (wie Sie vielleicht gemerkt haben, hat meine eigentliche Domäne nichts mit Personen und Clubs zu tun...) Instanzen leicht verfügbar sind, aber vorerst intern in einem HashMap gespeichert werden, gehasht auf der id - aber zumindest ich offenbare sie korrekt in der Schnittstelle.