Heim >Java >javaLernprogramm >JoinColumn vs. mappedBy in JPA: Wann sollte welche Annotation verwendet werden?
Den Unterschied zwischen JoinColumn und mappedBy in JPA verstehen
In der Java Persistence API (JPA) ist die Verwaltung von Beziehungen zwischen Entitäten von entscheidender Bedeutung. Zu den wichtigsten Annotationen zum Aufbau von Beziehungen gehören @JoinColumn und @mappedBy.
Bei der Verwendung von @OneToMany-Annotationen für bidirektionale Beziehungen muss zwischen der besitzenden und der inversen Seite der Beziehung unterschieden werden. Die Verwendung von @JoinColumn auf der Eigentümerseite zeigt an, dass die referenzierte Tabelle über eine Fremdschlüsselspalte für die entsprechende Tabelle verfügt. Im Gegensatz dazu bezeichnet @mappedBy die umgekehrte Seite, was bedeutet, dass die andere Entität als Eigentümer der Beziehung fungiert und über eine zugeordnete Spalte verfügt, die mithilfe von @mappedBy auf die Entität verweist.
Codebeispiel
Betrachten Sie die folgenden Codebeispiele:
@Entity public class Company { @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY) @JoinColumn(name = "companyIdRef", referencedColumnName = "companyId") private List<Branch> branches; ... }
@Entity public class Company { @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, mappedBy = "companyIdRef") private List<Branch> branches; ... }
Im ersten Beispiel ist Company das Die besitzende Seite und die Zweigstellen werden über die Fremdschlüsselspalte „companyIdRef“ referenziert. Im zweiten Beispiel ist „Company“ die Umkehrseite der Beziehung und Zweige werden über die zugeordnete Spalte „companyIdRef“ referenziert.
Korrekte Verwendung von Annotationen
Für den in der bereitgestellten Code Frage, die richtigen Anmerkungen sollten sein:
@Entity public class Company { @OneToMany(mappedBy = "company", orphanRemoval = true, fetch = FetchType.LAZY, cascade = CascadeType.ALL) private List<Branch> branches; } @Entity public class Branch { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "companyId") private Company company; }
Durch die Verwendung dieser Anmerkungen wird eine bidirektionale Beziehung zwischen Unternehmen hergestellt und Zweigniederlassung, mit dem Unternehmen als Kehrseite und Zweigniederlassung als Eigentümerseite.
Das obige ist der detaillierte Inhalt vonJoinColumn vs. mappedBy in JPA: Wann sollte welche Annotation verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!