Sar*_*abo 18 java orm hibernate jpa hibernate-mapping
@JoinColumn给出了一个Entity外键到另一个Entity,而@JoinTable将列出之间的所有关系之间的关系,EntityA和EntityB.据我所知,他们似乎都做类似的事情.我什么时候应该使用其中一种?
Vla*_*cea 31
假设您有一个与实体A有@ManyToOne关联的实体B
@JoinColumn将B_ID在使用目标实体表(例如B)时定义目标表外键(例如).
@Entity
public class A {
private Long id;
@ManyToOne
@JoinColumn(name="B_ID")
private B b;
}
Run Code Online (Sandbox Code Playgroud)
@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;
}
Run Code Online (Sandbox Code Playgroud)
这一次没有A,也不B含有任何外键,因为有一个单独的表(例如A_B)持有之间的关联A和B.
小智 12
@JoinTable将表的id都存储到一个单独的表中,而@JoinColumn将另一个表的id存储在一个新列中.
@JoinTable:这是默认类型.当您需要更规范化的数据库时,请使用此选项.即.减少冗余.
@JoinColumn:使用它来获得更好的性能,因为它不需要加入额外的表.
| 归档时间: |
|
| 查看次数: |
10971 次 |
| 最近记录: |