Heim > Java > javaLernprogramm > JoinColumn vs. MappedBy: Wie wählt man die richtige JPA-Annotation für Entitätsbeziehungen aus?

JoinColumn vs. MappedBy: Wie wählt man die richtige JPA-Annotation für Entitätsbeziehungen aus?

DDD
Freigeben: 2024-12-18 05:34:20
Original
972 Leute haben es durchsucht

JoinColumn vs. MappedBy: How to Choose the Right JPA Annotation for Entity Relationships?

JDBC: JoinColumn versus MappedBy

In der Java Persistence API (JPA) sind JoinColumn und mappedBy zwei Annotationen, die zum Definieren von Beziehungen zwischen Entitäten verwendet werden. Das Verständnis der Unterscheidung zwischen diesen Annotationen ist für eine effiziente Datenmodellierung und Datenbankinteraktionen von entscheidender Bedeutung.

JoinColumn: Besitz und Fremdschlüssel

Die @JoinColumn-Annotation gibt an, dass die Entität mit annotiert wurde es ist der Eigentümer der Beziehung. Dies bedeutet, dass die entsprechende Tabelle eine Fremdschlüsselspalte verwaltet, die auf den Primärschlüssel der referenzierten Tabelle verweist. Im bereitgestellten Beispielcode heißt es beispielsweise:

@JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")
Nach dem Login kopieren

Die Unternehmenseinheit ist der Eigentümer der Beziehung mit der Niederlassungseinheit. Die Spalte „companyIdRef“ in der Branch-Tabelle dient als Fremdschlüssel, der auf die Spalte „companyId“ in der Tabelle „Company“ verweist.

MappedBy: Inverse Relationships

Andererseits ist die Die Annotation @mappedBy bedeutet, dass sich die damit annotierte Entität auf der umgekehrten Seite der Beziehung befindet. Der Eigentümer der Beziehung befindet sich in der „anderen“ Entität, auf die durch das Attribut „mappedBy“ verwiesen wird. In diesem Szenario:

@mappedBy = "companyIdRef"
Nach dem Login kopieren

Die Niederlassungseinheit ist die Umkehrung der Beziehung zur Unternehmenseinheit. Das Attribut „companyIdRef“ in der Branch-Entität stellt eine bidirektionale Beziehung her, die den Zugriff auf die Company-Entität von der Branch-Entität aus ermöglicht.

Korrekte Anmerkungen für den Beispielcode

An Um eine vollständig bidirektionale Beziehung zu erreichen, wären die korrekten Annotationen für den Beispielcode:

@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 korrektes Annotieren der Beziehungen, Sie können Daten zwischen verwandten Entitäten in Ihren Java-Anwendungen effektiv navigieren und bearbeiten.

Das obige ist der detaillierte Inhalt vonJoinColumn vs. MappedBy: Wie wählt man die richtige JPA-Annotation für Entitätsbeziehungen aus?. 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