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
DDDOriginal
2024-12-18 05:34:20976Durchsuche

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")

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"

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;
}

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!

Stellungnahme:
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