java – 在实现带有生成ids的实体的equals()时,最佳做法是什么?

如果我有一个表A,B,C,D的表

A:自动生成的id(PK)

B& C:组合必须是唯一的(这些是在业务意义上实际定义身份的列)

D:其他一些列

现在,如果我将根据这个表创建业务对象(例如在Java中),那么哪个更好地实现了equals()方法:

>基于A定义平等
>根据B和C定义相等性

或者,我选择的两个是不重要的.

解决方法

绝对B和C,因为即使在实体持久化之前,您也希望equals()合约有效.你说自己:

these are the columns that actually
define identity in the business sense

如果是这样,那就是equals()应该使用的逻辑.数据库密钥是数据库的关注点,应该与您的业务层无关.

并且不要忘记在hashcode()中使用相同的属性.

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。