Heim > Java > javaLernprogramm > JoinColumn vs. mappedBy in JPA: Wann sollte welche Annotation verwendet werden?

JoinColumn vs. mappedBy in JPA: Wann sollte welche Annotation verwendet werden?

DDD
Freigeben: 2024-12-21 19:11:11
Original
580 Leute haben es durchsucht

JoinColumn vs. mappedBy in JPA: When to Use Which Annotation?

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;
    ...
}
Nach dem Login kopieren
@Entity
public class Company {

    @OneToMany(cascade = CascadeType.ALL , fetch = FetchType.LAZY, 
    mappedBy = "companyIdRef")
    private List<Branch> branches;
    ...
}
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage