我要設計DAO層,從DAO對象我打電話視圖,它返回到我所有的data.Below是該方案:DAO層對象
當我做客戶搜索,它返回到我的聯繫方式,他的交易細節,地址細節。最後,我得到所有的數據,它指的是個體實體(addressvo,transactionvo和contectvo)。
如果我通過結果集循環,這裏如何分離數據並將其分配給我的Value對象?
問候, Chaitu
我要設計DAO層,從DAO對象我打電話視圖,它返回到我所有的data.Below是該方案:DAO層對象
當我做客戶搜索,它返回到我的聯繫方式,他的交易細節,地址細節。最後,我得到所有的數據,它指的是個體實體(addressvo,transactionvo和contectvo)。
如果我通過結果集循環,這裏如何分離數據並將其分配給我的Value對象?
問候, Chaitu
不要只自卸全部代碼在一個DAO。有四個DAO。最好的設計之一是每桌有一個DAO。所以,你有AddressDAO
,TrandactionDAO
,ContactDAO
和UserDAO
。如果您有四張桌子,
addresses
a_id
user_id (FK)
transactions
t_id
user_id (FK)
contacts
c_id
user_id (FK)
users
user_id (PK)
現在,你寫你的UserDAO.searchUsers(...)
這種方法與其他虛擬組織返回UserVO
,因爲它的屬性:
List<UserVO> UserDAO.searchUsers(...){
//search query returns user_ids
//populate the UserVOs
//for each user_id
userList.add(UserDAO.getUserById(user_id));
//return userList
}
UserVO getUserById(...){
//get UserVO from users tables
UserVO uvo = ...;
//populate rest of the attributes
uvo.setAddress(AddressDAO.getAddress(user_id));
uvo.setTransactions(TransactionDAO.getTransactions(user_id));
uvo.setContacts(ContactDAO.getContacts(user_id));
return uvo;
}
評論後
更新
但是我在這裏獲取所有信息e resultset object.Here我有一個視圖,它返回給我整個對象
是的,這是將關係數據庫映射到對象時的標準難題。一方面,您可以在一個查詢中查看所有數據,但是會創建雜亂的對象(您想要的那個);另一方面,你有更清潔的Java代碼,但需要多個數據庫命中(我上面提到的那個)。
如果你只是想填充對象,它很簡單(但凌亂)。我想你可能在用戶和內容之間有一對多的映射;用戶和交易。在這種情況下,每個用戶ID都會有多行。按照下面的步驟:
while(resultSet.next()){
long userId = resultSet.getLong("user_id");
UserVO uvo = //populate the userVO with users table data
do{
//create List of *unique* contactVO, transactionVO and addressVO set them to userVO
}while(resultSet.next() && resultSet.getLong("user_id") == userId);
//check if resultSet is over? else user_id changes move back one row
if(!resultSet.isAfterLast())
resultSet.previous();
else
break; //resultset exhausted
}
正如你看到的,你是本質除草組件關閉的結果集。而它凌亂是。我寧願反對它。
@Nishant:謝謝你的回答。但是我在這裏得到了一個結果集對象中的所有信息。在這裏我有一個視圖,它返回給我整個對象。 – user569125 2011-02-24 21:04:34
大家好,如果很難處理多個實體與純jdbc,是否有可能與休眠處理 – user569125 2011-02-24 21:48:24
@ user569125根據評論更新了答案 – Nishant 2011-02-25 04:34:46
你的問題是什麼?你有沒有嘗試過向我們展示代碼? – 2011-02-24 20:28:56
@Amir Raminf:我沒有任何代碼,我處於設計階段,只是問他們是否面臨類似的問題。 – user569125 2011-02-24 20:39:00
再次,我沒有看到問題。 :)你所說的一切都是一個聲明。 – 2011-02-24 20:41:35