为什么要在 Java 中使用 @JoinTable 注释而不是单向 @OneToMany 注释
Why would you use @JoinTable annotation instead of Unidirectional @OneToMany annotation within Java
我正在 Udemy 上使用 Hibernate(和 JPA)学习持久性,演示者解释了先前讨论的关联的替代方法(单向 OneToOne
、双向 OneToOne
、单向 OneToMany
、双向 OneToMany
),称为 @JoinTable
JPA 注释。
他提到有时只有一小部分“许多”实体与特定类型的“一个”实体相关联,我们不希望“许多”实体上的字段体现与“一个”实体,因为该字段在大多数情况下将保持为空。 他继续针对这种情况推荐 @JoinTable
。
我的问题是,考虑到 @JoinTable
选项对 Java 实体的影响,为什么不在“一个”实体上使用单向 @OneToMany
注释并保留“许多”实体原样?除了单向 @OneToMany
带来的功能之外,@JoinTable
从 Java 内部为情况带来哪些附加功能?
那么他显然是错误的,@JoinTable
在这里绝对没有必要,并且会在内存(要存储更多数据)和时间复杂度(另一个 table 加入)方面引入开销。
你说得对,你只需要 @JoinColumn
来映射一对一和一对多关系(如果它应该是双向的,则在另一侧 mappedBy
) .
P.S.: 我会考虑进一步学习这门课程,因为即使是 jpa 的基础知识,它似乎也有缺陷。
我正在 Udemy 上使用 Hibernate(和 JPA)学习持久性,演示者解释了先前讨论的关联的替代方法(单向 OneToOne
、双向 OneToOne
、单向 OneToMany
、双向 OneToMany
),称为 @JoinTable
JPA 注释。
他提到有时只有一小部分“许多”实体与特定类型的“一个”实体相关联,我们不希望“许多”实体上的字段体现与“一个”实体,因为该字段在大多数情况下将保持为空。 他继续针对这种情况推荐 @JoinTable
。
我的问题是,考虑到 @JoinTable
选项对 Java 实体的影响,为什么不在“一个”实体上使用单向 @OneToMany
注释并保留“许多”实体原样?除了单向 @OneToMany
带来的功能之外,@JoinTable
从 Java 内部为情况带来哪些附加功能?
那么他显然是错误的,@JoinTable
在这里绝对没有必要,并且会在内存(要存储更多数据)和时间复杂度(另一个 table 加入)方面引入开销。
你说得对,你只需要 @JoinColumn
来映射一对一和一对多关系(如果它应该是双向的,则在另一侧 mappedBy
) .
P.S.: 我会考虑进一步学习这门课程,因为即使是 jpa 的基础知识,它似乎也有缺陷。