[英]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.