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中文網其他相關文章!