何时应将@JoinColumn或@JoinTable与 JPA 配合使用?
2022-09-01 08:07:10
@JoinColumn
将一个外键提供给另一个外键,而将列出 A 和 B 之间所有关系之间的关系。据我所知,他们似乎都在做类似的事情。我什么时候应该使用其中一个?Entity
Entity
@JoinTable
Entity
Entity
@JoinColumn
将一个外键提供给另一个外键,而将列出 A 和 B 之间所有关系之间的关系。据我所知,他们似乎都在做类似的事情。我什么时候应该使用其中一个?Entity
Entity
@JoinTable
Entity
Entity
假设您有一个实体,该实体具有关联和实体A
@ManyToOne
B
@JoinColumn将使用目标实体表(例如)时定义目标表外键(例如)。B_ID
B
@Entity
public class A {
private Long id;
@ManyToOne
@JoinColumn(name="B_ID")
private B b;
}
@JoinTable将使用单独的表来保存 和 之间的关系。A
B
@Entity
public class A {
private Long id;
@ManyToOne
@JoinTable(
name = "A_B",
joinColumns = @JoinColumn(name = "B_ID"),
inverseJoinColumns = @JoinColumn(name = "A_ID")
)
private B b;
}
这次既不包含也不包含任何外键,因为有一个单独的表(例如 )来保存 和 之间的关联。A
B
A_B
A
B
@JoinTable将两个表的 id 存储到另一个表中,而@JoinColumn将另一个表的 id 存储在新列中。
@JoinTable:这是默认类型。当您需要一个更加规范化的数据库时,请使用此选项。即。以减少冗余。
@JoinColumn :使用它来获得更好的性能,因为它不需要连接额外的表。