gpt4 book ai didi

java - 使用实体的基类是个好主意吗?

转载 作者:行者123 更新时间:2023-12-01 18:26:43 25 4
gpt4 key购买 nike

我读到this article关于 hibernate 实体的基类。

如今,对 id、version、create_at、create_by 等常见字段使用基类是个好主意吗?

哈希码和 equals 方法怎么样?我不喜欢在 equals 方法中使用 id 字段。

是否可以通过组合来解决这个问题?有什么缺点?

最佳答案

虽然使用实体基类有很多用途,但为了映射公共(public)字段,我宁愿通过嵌入来实现:

  1. 用您的公共(public)字段定义一个类并将其标记为 @Embeddable .
  2. 在包含实体中,添加对“embeddable”类的引用,并将该引用标记为 @Embedded@EmbeddedId ,无论适用。
  3. 如果适用,请在引用文献中添加 @AttributeOverrides 标记或@AssociationOverrides自定义映射。

我在 @MappedSuperclass 中看到的主要问题(链接帖子中使用的方法)是每个实体只能有一个父类(super class)。这在许多用例中可能没问题,但对于最复杂的用例来说就太不灵活了。嵌入使您可以灵活地组合任意数量的 @Embeddable。代价是它不透明。如果您有:

select u.streetname from User u

并将streetname移动到嵌入的地址,现在您必须执行以下操作:

select u.address.streetname from User u

最后,如果您知道您的模型很简单,@MappedSuperclass 就可以解决问题。如果您有一个复杂的模型,您可以从 @Embeddable@Embedded 中受益。

关于java - 使用实体的基类是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com