Heim >Java >javaLernprogramm >JoinColumn vs. MappedBy: Wie wählt man die richtige JPA-Annotation für Entitätsbeziehungen aus?
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!