@JoinColumn
ikisi de benzer şeyler yapmak görünür bir Entity
Bildiğim kadarıyla söyleyebilirim Entity
A ve Entity
B. arasındaki tüm ilişkilerin arasındaki ilişkiyi listeler başka Entity
@JoinTable
oysa bir yabancı anahtar verir. Ne zaman birini kullanmalıyım?@JoinColumn'u veya @JoinTable'ı Ne Zaman Kullanmalıyım?
cevap
Diyelim ki bir @ManyToOne
dernek hedef tablo yabancı anahtarı tanımlayacak bir varlık B
@JoinColumn ot olan bir varlık A
(örneğin B_ID
) hedef Varlık tablosunu (örn B
) kullanırken var diyelim.
@Entity
public class A {
private Long id;
@ManyToOne
@JoinColumn(name="B_ID")
private B b;
}
@JoinTableA
ve B
arasındaki ilişkiyi tutmak için ayrı bir tablo kullanacaktır. ayrı bir tablo var çünkü
@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;
}
bu kez de A
de B
, herhangi bir yabancı anahtar içeren (örneğin A_B
) A
ve B
arasındaki ilişkiyi tutmak için.
@JoTablo, her tablonun kimliğini ayrı bir tabloya kaydeder; @JoinColumn ise yeni bir sütunda başka bir tablonun kimliğini depolar.
@JoinTablo: Bu varsayılan türdür. Daha normalize edilmiş bir veritabanına ihtiyacınız olduğunda bunu kullanın. yani. fazlalığı azaltmak için.
@JoinColumn: Daha fazla performans için ekstra tabloya ihtiyaç duymadığından bunu kullanın.
Böylece bir JoinTable N-N ilişkisidir? – julestruong
Veritabanı terminolojisinde, çoktan çoğa bir ilişki var. Bu durumda, bir FK bir birleştirme tablosuyla bire-çok ilişkilendirmeye dönüştürmek için benzersiz bir kısıtlamaya sahip olacaktır. –