簡體   English   中英

具有一對多/多對一關系的POJO數據(JDBC)

[英]POJO data with one to many / many to one relationship(JDBC)

例如,我有兩個實體:Enterprise,Department。 企業有很多部門,部門有一個企業,所以在Department表中有一個列--Enterprise_ID。 我有一個保存Department對象的功能

void save(Department department);

要在表中添加Enterprise_ID,我需要在Enterprise對象或企業ID上引用。

哪種方式更合適?

但是我更喜歡在部門對象中沒有這樣的信息,但是這樣我怎樣才能在表中保存Enterprise_ID? 在我看來,Hibernate以某種方式做到了這一點。

public class Department{
private long id;
private String name;
private DepartmentType type;
private List<Employee> employees;
//getters()/setters()
}
public class Enterprise{
...
private List<Department> departments;
...
}

部門沒有關於企業所在企業的任何信息。 所以只使用部門對象我不能在部門表中插入Enterprise_ID(FK)。 但是hibernate的save方法不知怎的做了。 如果沒有使用上面的實體進行休眠,我怎么能這樣做;

我使用JDBC。

如果您更改Enterprise.departments集合中的內容,Hibernate將僅保存/更新外鍵。 如果你沒有反向關系,這是唯一的方法。

在您的代碼中,您必須使用Enterprise對象來更新Department表中的外鍵。

您可以通過在Department類中放置一個字段'enterprise'來創建雙向關聯,但是您需要手動保持兩個關系同步...

要以與hibernate相同的方式執行此操作,您將擁有一個save(Enterprise)方法,該方法將企業對象持久save(Enterprise)到db並插入/更新外鍵關聯。

Hibernate支持可空和非可空外鍵。 在后一種情況下,它將首先插入企業,獲取其主鍵值,然后插入部門和正確的外鍵值。

你也可以這樣做。 但是save(Department)方法只能在department表上進行更新,而不能更改與enterprise表的關聯。 為此,您必須在企業中更改集合並將其保存/更新到數據庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM