【发布时间】:2011-11-26 14:56:08
【问题描述】:
可爱的equals和hashcode,所有的理论都是here和here
我已决定在我的许多休眠实体/域对象中使用 equals() 和 hashcode() 中自动生成的 id。
但是,许多网站表示您不应该这样做,因为在比较或使用哈希码的过程中第一次将对象持久化到数据库中的风险。
我的观点是,在大多数用例中,这比任何其他字段更不可能被更改。
单个域对象在首次创建时生成一次 id,而几乎所有其他字段都有机会在正常业务流程中进行更改(甚至可以更改唯一的用户名...)。
在我的许多域对象中,唯一 id 几乎是唯一需要考虑的字段(人、地址、宠物、... 客户等等等?组合字段是个好主意,但是 从不 我认为使用自动生成的 id 不是一个好建议。
我还缺少什么吗?
【问题讨论】:
标签: java hibernate equals hashcode effective-java