【问题标题】:Why would you use @JoinTable annotation instead of Unidirectional @OneToMany annotation within Java为什么要在 Java 中使用 @JoinTable 批注而不是单向 @OneToMany 批注
【发布时间】:2020-06-23 10:42:38
【问题描述】:

我正在 Udemy 上使用 Hibernate(和 JPA)学习持久性,演示者解释了先前讨论的关联的替代方法(单向 OneToOne、双向 OneToOne、单向 OneToMany、双向 OneToMany),称为@JoinTableJPA 注释。

他提到有时只有一小部分“Many”实体与特定种类的“One”实体相关联,我们不希望“Many”实体上的字段体现与“一个”实体,因为该字段在大多数情况下将保持为空。 他继续针对这种情况推荐@JoinTable

我的问题是,考虑到 @JoinTable 选项对 Java 实体的影响,为什么不直接在“One”实体上使用单向 @OneToMany 注释,而让“Many”实体保持原样?除了单向 @OneToMany 带来的功能之外,@JoinTable 还能从 Java 中带来哪些附加功能?

【问题讨论】:

    标签: java hibernate jpa join hibernate-mapping


    【解决方案1】:

    那么他显然错了,@JoinTable 在这里肯定是没有必要的,并且会在内存(要存储更多数据)和时间复杂度(要加入另一个表)方面引入开销。

    你说得对,你只需要@JoinColumn 来映射一对一和一对多的关系(如果它应该是双向的,那么mappedBy 在另一边)。

    P.S.:我会考虑进一步学习这门课程,因为即使是 jpa 的基础知识,它似乎也存在缺陷。

    【讨论】:

    • 谢谢你澄清这个问题,Andronicus。不太含糊,我还想知道在哪种上下文/方式下,“@JoinTable”确实比单向“@OneToMany”注释更有用?差异仅与架构设计有关,还是在 Java 中还有其他显着优势?
    • @GerhardusduToit 正如我所说,@JoinTable 不会更有用。它可能用于多对多关系而不映射连接表,其中@JoinColumn不适用。
    猜你喜欢
    • 1970-01-01
    • 2018-10-12
    • 2011-02-09
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多