1
我正在使用Java Enterprise Edition和JPA(Hibernate)作爲服務器 - 客戶端應用程序(通過EJB)。 該程序將大量數據存儲在需要傳輸到客戶端的數據庫中。 因爲我想盡可能少地傳輸數據,所以我不想傳輸兩次對象。通過EJB/JPA(休眠)只傳遞一次對象
我想展示一個小例子我的問題:
數據庫:
[User]
- UserID (PK)
- Name
- Adress (FK)
[Adress]
- AdressID (PK)
- Street
Sample data:
[User:1, Max, 1]
[User:2, Peter, 2]
[Adress:1, Mainstreet]
[Adress:2, Riverstreet]
現在我要轉移的所有用戶的列表(與ADRESS的熱切加載)到客戶端,也所有地址列表。
服務器端創建列表:
用戶列表:
Query q = manager.createQuery("select u from UserBean m LEFT JOIN FETCH u.adress");
List<UserBean> l = (List<UserBean>) q.getResultList();
return l;
Adresslist:
Query q = manager.createQuery("select a from AdressBean m");
List<AdressBean> l = (List<AdressBean>) q.getResultList();
return l;
當客戶端獲取列表我檢查user1.getAdress().hashCode()
的散列碼與adress1.hashCode()
。 結果是它不相同,因此該對象必須已保存兩次,並且在獲取列表時還要傳輸兩次。
是否有可能告訴(也許在EJB中)僅傳輸一次對象並傳輸正確的引用?或者我能改善我的轉移機制嗎?
非常感謝! Peter31280
還有什麼:) +1 – 2010-10-02 16:14:09