在使用映射(或“get”方法)时,使用领域对象作为键是好的实践吗?还是最好只使用领域对象的id?
这可以通过一个示例更简单地解释。假设我有Person类、Club类和Membership类(连接其他两个类)。也就是说,
public class Person {
private int id; // primary key
private String name;
}
public class Club {
private String name; // primary key
}
public class Membership {
private Person person;
private Club club;
private Date expires;
}
或者类似那样。现在,我想要给Club添加一个方法getMembership
。问题是,这个方法是否应该接收一个Person对象:
public Membership getMembership(Person person);
或者,一个人的ID:public Membership getMembership(int personId);
哪种方式最符合习惯,哪种方式最方便,哪种方式最适合?
编辑:有很多非常好的答案。我选择不公开ID,因为“人员”(正如您可能意识到的,我的实际领域与人和俱乐部无关...)实例很容易获得,但现在它在哈希映射中内部存储ID - 但至少我在接口中正确地公开它。