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

前端之家收集整理的这篇文章主要介绍了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()中使用相同的属性.

猜你在找的Java相关文章