如果我有一个包含A,B,C,D列的表 A:自动生成的ID(PK) B和C:组合必须是唯一的(这些是从业务角度实际定义身份的列) D:其他一些列
现在,如果我将基于此表(例如,在Java中)创建业务对象,那将是equals()方法的更好实现:
或者,我选择这两者中的哪一个都不重要。
绝对是B和C,因为您希望equals()合同在实体持久之前仍然有效。你说自己:
equals()
这些是从业务角度实际定义身份的列
如果是这样,则equals()应该使用该逻辑。数据库密钥是数据库的关注点,应该与您的业务层无关。
并且不要忘记在中使用相同的属性hashcode()。
hashcode()