Nim*_*sky 4 java hibernate equals hashcode effective-java
可爱的equals和hashcode,所有的理论都在这里,也在这里
我已经决定在我的许多休眠实体/域对象中使用 equals() 和 hashcode() 中自动生成的 id。
但是,许多网站表示您永远不应该这样做,因为在比较或使用哈希码的过程中第一次将对象持久保存到数据库中的风险。
我的观点是,在大多数用例中,这比更改任何其他字段的可能性要小得多。
单个域对象在首次创建时会生成一次 id,而几乎所有其他字段在正常业务流程中都有机会被更改(甚至可以更改唯一的用户名……)。
在我的许多域对象中,唯一 id 几乎是唯一需要考虑的合适字段(人、地址、宠物、...客户等?组合字段是一个好主意,但从不使用自动生成的 id,我认为,不是很好的建议。
我还缺少其他东西吗?
您应该阅读Hibernate Community Wiki 上的Equals 和 HashCode。
不使用数据库标识符的主要原因equals,并暗示,hashCode是处理与存储,但不坚持,实体。在持久化之前,所有实例都将是equal,除非您注意明确处理这种情况。
如果你知道你不会出现在这种情况下,并且你确保它有很好的记录,你可能没问题。您以后可以随时更改实现。
| 归档时间: |
|
| 查看次数: |
2196 次 |
| 最近记录: |