我意識到使用GWT和Hibernate我必須使用與Hibernate類幾乎相同的DTO(數據傳輸對象)對象(假設我沒有使用Gilead或Dozer或一些其他的lib)。gwt休眠一對多數據提取
所以,如果我舉個例子,有以下實體:
Company (id, name, city_id),
Bank (id, name),
BankAccount(id, account, bank_id, company_id),
City(id, name)
這樣的城市可以有多個公司和銀行都(需要)和公司(罐)包含多個銀行賬戶。 喜歡的東西:
Bank -<BankAccount>- Company >- City
這些屬性我休眠和DTO類有
class Company{
int id;
String name;
City city;
Set<BankAccount> accounts;
//with appropriate getters and setters
}
class Bank{
int id;
String name;
Set<BankAccount> accounts;
//with appropriate getters and setters
}
class BankAccount{
int id;
String account;
Bank bank;
Company company;
//and all get set
}
class City{
int id;
String name;
//all get set
}
DTO類是相同的,只有DTO作爲後綴他們的名字。
簡短的問題是: 從Hibernate對象中獲取DTO對象的最佳方式是什麼?
說明: 如您所見,每個銀行都包含多個BankAccounts,並且每個BankAccount都引用它所屬的銀行。
所以我不能製作虛擬硬拷貝構造函數,因爲它意味着大量的手動和複雜的工作(可能不是這個簡單的例子,但問題變得複雜,因爲涉及新的實體)。
如果我想所有的公司,我會做這樣的事情:
//necessary Hibernate Stuff
List<Company> companies = new ArrayList<Company>(s.createQuery("from Company").list());
現在我只有公司在休眠的對象,但我也需要他們的尊重城市,銀行賬戶和銀行自己的賬戶屬於。此外,我必須將所有這些複製到DTO對象,但我想避免重複。
我該怎麼做?
如何將多組銀行,帳戶,城市,公司的多個類中包含對象的引用作爲DTO對象返回到整個這些類中?
我不能在DTO對象中創建複製構造函數,因爲我可能會創建無限遞歸,如果我確實避免了這種情況,我不知道如何不創建重複項。
我希望我很清楚,並沒有自己創建重複(有幾個問題,但沒有看到一些與GWT(DTO)對象)。
我想在我的項目中使用hibernate。我仍然可以使用hibernate獲取數據庫數據,並使用RequestFactory進行數據傳輸? – nekome
是的,你可以在'Hibernate'中使用'RequestFactory'。事實上'RequestFactory'被設計用於任何持久性框架。 –