JPA hashCode() 和 equals() 困境
在 JPA 实体类中使用 hashCode() 和 equals() 方法仍然是一个问题由于其对数据完整性和性能的潜在影响,这是一个有争议的话题。本文探讨了可用的选项及其各自的优缺点。
hashCode() 和 equals() 实现的选项
Object.equals() 和 Object.hashCode() (默认)
基于主键覆盖
基于业务覆盖关键
其他注意事项
选项选择
最佳选择取决于具体应用 要求。如果对象标识很关键并且不使用可变实体,则选项 2(基于主键覆盖)可能适合。对于分离实体操作或基于非主键的身份,首选选项 3(基于业务密钥覆盖)。
推荐方法
文章“Don'让 Hibernate 窃取你的身份”建议了一种替代方法:在保存到数据库之前分配对象 ID。这消除了 ORM 的 ID 管理责任,并简化了对象身份处理。
以上是您应该如何在 JPA 实体中实现 hashCode() 和 equals()?的详细内容。更多信息请关注PHP中文网其他相关文章!