当前位置: 首页 > 面试题库 >

对具有生成ID的实体实施equals()时的最佳做法是什么

东方方伟
2023-03-14
问题内容

如果我有一个包含A,B,C,D列的表
A:自动生成的ID(PK)
B和C:组合必须是唯一的(这些是从业务角度实际定义身份的列)
D:其他一些列

现在,如果我将基于此表(例如,在Java中)创建业务对象,那将是equals()方法的更好实现:

  1. 根据A定义相等
  2. 根据B和C定义相等

或者,我选择这两者中的哪一个都不重要。


问题答案:

绝对是B和C,因为您希望equals()合同在实体持久之前仍然有效。你说自己:

这些是从业务角度实际定义身份的列

如果是这样,则equals()应该使用该逻辑。数据库密钥是数据库的关注点,应该与您的业务层无关。

并且不要忘记在中使用相同的属性hashcode()



 类似资料:
  • 问题内容: 我的快速搜索显示了参考实现(http://stax.codehaus.org),Woodstox实现(http://woodstox.codehaus.org)和Sun的SJSXP实现(https://sjsxp.dev.java.net / )。 请评论它们的相对优点,并让我介绍我应考虑的任何其他实现。 问题答案: 伍德斯托克斯为我赢得了每一次胜利。这不仅是性能,而且-sjsxp抽搐

  • 问题内容: 我已决定在多个hibernate实体/域对象的equals()和hashcode()中使用自动生成的ID。 但是,许多网站都说您永远不要这样做,因为存在在比较对象或使用哈希码的过程中将对象第一次持久保存到数据库的风险。 我的观点是,在大多数用例中,这比其他任何要更改的领域都不太可能。 单个域对象在首次创建时就会生成一次ID,而几乎每个其他字段都有机会在正常业务流程中进行更改(甚至可以更

  • 问题内容: 我正在调用一个Web服务,该服务返回JSON中的对象数组。我想获取这些对象并使用HTML填充div。假设每个对象都包含一个url和一个名称。 如果我想为每个对象生成以下HTML: 是否有最佳做法?我可以看到几种方法: 连接字符串 创建元素 使用模板插件 在服务器上生成html,然后通过JSON投放。 问题答案: 选项#1和#2将是您最直接的直接选项,但是,对于这两个选项,您都将通过构建

  • 问题内容: 内容: 我的问题与我正在像SO这样开发的论坛有关,那里有: 有权查看主题但无法回复或投票的访客 拥有足够代表的成员可以编辑/投票其他线程,并且默认情况下,他们可以答复并具有与来宾相同的特权 几乎可以做任何事情的管理员 我希望将此ACL应用于整个站点,并且默认情况下拒绝所有资源。 我阅读了使用Zend_Acl的基础知识- 您基本上可以创建角色(guest,member,admin),并拒

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我过去曾经做过Java和JSP编程,但是我是Java Server Faces的新手,并且想知道JSF开发是否有一套最佳实践。 问题答案: 一些提示:了解JS

  • 问题内容: 我在上配置了,用于访问包含复合ID的实体: 例如,当我访问服务器时,我以json的形式返回了正确的资源,但是_links部分中针对self的href是错误的,并且对于我查询的任何其他客户也是相同的: 即: 我想这是因为我的复合ID,但是我对如何更改此默认行为感到烦恼。 我看过和类,但不确定是否需要更改多少才能解决此问题。 问题答案: 不幸的是,所有Spring Data JPA / R