2011-02-24 95 views
-1

我要設計DAO層,從DAO對象我打電話視圖,它返回到我所有的data.Below是該方案:DAO層對象

當我做客戶搜索,它返回到我的聯繫方式,他的交易細節,地址細節。最後,我得到所有的數據,它指的是個體實體(addressvo,transactionvo和contectvo)。

如果我通過結果集循環,這裏如何分離數據並將其分配給我的Value對象?

問候, Chaitu

+2

你的問題是什麼?你有沒有嘗試過向我們展示代碼? – 2011-02-24 20:28:56

+0

@Amir Raminf:我沒有任何代碼,我處於設計階段,只是問他們是否面臨類似的問題。 – user569125 2011-02-24 20:39:00

+0

再次,我沒有看到問題。 :)你所說的一切都是一個聲明。 – 2011-02-24 20:41:35

回答

0

不要只自卸全部代碼在一個DAO。有四個DAO。最好的設計之一是每桌有一個DAO。所以,你有AddressDAO,TrandactionDAO,ContactDAOUserDAO。如果您有四張桌子,

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 
} 

正如你看到的,你是本質除草組件關閉的結果集。而它凌亂是。我寧願反對它。

+0

@Nishant:謝謝你的回答。但是我在這裏得到了一個結果集對象中的所有信息。在這裏我有一個視圖,它返回給我整個對象。 – user569125 2011-02-24 21:04:34

+0

大家好,如果很難處理多個實體與純jdbc,是否有可能與休眠處理 – user569125 2011-02-24 21:48:24

+0

@ user569125根據評論更新了答案 – Nishant 2011-02-25 04:34:46