栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

我应该在JPA实体中编写equals()和hashCode()方法吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

我应该在JPA实体中编写equals()和hashCode()方法吗?

不必要。共有三个选项:

  • 不要覆盖-因此您将使用实例。当您使用仅附加到会话的实体(因此保证是同一实例)的集合时,这很好。在许多情况下,这(对我而言)是首选方式,因为在覆盖时它需要较少的代码和较少的考虑

  • 覆盖

    hashCode()
    equals()
    带有业务密钥。那可能是识别实体的属性的子集。例如,对于一个
    User
    好的企业密钥,可能是
    username
    email
    。这被认为是好的做法。

  • 覆盖

    hashCode()
    equals()
    仅使用ID字段。在某些情况下,这很好,尤其是当您具有手动分配的标识符(例如UUID)时。如果您的实体永远不会进入集合,也可以。但是对于进入集合的临时实体(没有标识符),这会引起问题,因此请谨慎使用此选项。正如Seanizer指出的-您应该避免使用它。通常,除非您真的知道自己在做什么(也许将其记录在案),否则总是这样

有关更多详细信息,请参见本文。还要注意,

equals()
hashCode()
是捆绑在一起的,应该在完全相同的字段中实施。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/486038.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号