首頁 >Java >java教程 >JoinColumn 與 MappedBy:如何為實體關係選擇正確的 JPA 註解?

JoinColumn 與 MappedBy:如何為實體關係選擇正確的 JPA 註解?

DDD
DDD原創
2024-12-18 05:34:20973瀏覽

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

JDBC:JoinColumn 與MappedBy

在Java Persistence API (JPA) 中,JoinColumn 和mappedBy 是用於定義實體之間的定義實體關係兩個註釋。理解這些註解之間的差異對於高效的資料建模和資料庫互動至關重要。

JoinColumn:擁有權與外鍵

@JoinColumn 註解表示實體它是關係的擁有者。這意味著對應的表維護一個引用被引用表的主鍵的外鍵列。例如,在提供的範例程式碼中:

@JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")

Company 實體是與 Branch 實體關係的擁有者。 Branch 表中的 companyIdRef 欄位將用作引用 Company 表中的 companyId 列的外鍵。

MappedBy:反向關係

另一方面, @mappedBy 註解表示用它註解的實體位於關係的反面。關係的擁有者駐留在「其他」實體中,該實體由mappedBy 屬性引用。在這種情況下:

@mappedBy = "companyIdRef"

Branch 實體與 Company 實體的關係相反。 Branch 實體中的 companyIdRef 屬性建立了雙向關係,允許從 Branch 實體存取 Company 實體。

範例程式碼的正確註解

至實現完全雙向關係,範例程式碼的正確註解為:

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

透過正確註解關係,您可以有效地導航和操作Java 應用程式中相關實體之間的資料。

以上是JoinColumn 與 MappedBy:如何為實體關係選擇正確的 JPA 註解?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn