2014-05-21 64 views
0

我是設計類圖的新手。我在設計中遵循DAO模式。如果DB包含表視圖,是否需要更改類圖?

在我的項目中,一個用戶可以添加多個聯繫人,這些聯繫人可以進一步添加到多個組中。

比方說1個聯繫人 - >多個組。 按照我的要求,UserContact和UserGroup是管理聯繫人和組的類。

DB聯繫人和組存儲在兩個不同的表中。

有一個用例檢索所有聯繫人及其組,以便我需要首先檢索所有聯繫人,然後再次使用contactID我需要進行查詢以獲取其相關組。爲了避免在DB中出現此問題,在這兩個表上查看。 現在,使用VIEW,我需要做一個查詢來獲取用戶聯繫人和組。

如何在DAO中添加此方法? 如何更改我的課程,以便可以將聯繫人和組映射到我的對象? 以下是涉及此用例的類。 enter image description here

回答

2

如果我理解正確的問題;您可以創建僅具有查詢(get)方法的GroupContactDAOImpl類,例如,如果您願意的話,可以使用getGroupContacts(groupId)getAllGroupContacts()。由於「羣組聯繫人」不是擁有自己表格的實體,因此UserContactDAOImpl.addContactUserGroupDAOImpl.addGroup方法足以添加新記錄。

如果我需要獲得與一個聯繫人關聯的組,我如何將聯繫人信息和組映射到一個對象?

如果你想組映射聯繫人信息到一個對象,你可以一個UserGroup屬性添加到UserContact類(如在Hibernate)。那麼GroupContactDAOImpl將具有如下方法:UserContact getUserContactWithGroups(contactID)

同樣,如果您想獲得所有聯繫人的團隊信息,您可以將UserContact屬性添加到UserGroup類。 GroupContactDAOImpl將具有如下方法:UserGroup getUserGroupWithContacts(groupID)

可能有其他的方法來做同樣的事情;希望這可以幫助。

由於我需要使用UserContact插入和更新聯繫人,它應該只包含contactID,電子郵件和名稱。我使用UserContact和UserGroup作爲DTO。我可以創建一個保存使用UserContactDAOImpl的UserContact和UserGroup的新類,並且這是一種更好的方法嗎?

是的,如果您想離開UserContact級,您可以按照這種方式進行。您將擁有一個新的DTO(例如UserContactWithGroups)並從UserContactDAOImpl(例如getContactWithGroups方法)返回它。您也可以創建一個單獨的DAO類,但它並不重要。最好將它適應於你自己的用例。

+0

感謝您的回覆。如果我需要獲得與一個聯繫人相關聯的組,我如何才能將聯繫人信息和組映射到一個對象? – satyanarayana

+0

由於我需要使用UserContact插入和更新聯繫人,它應該只包含聯繫人ID,電子郵件和姓名。我使用UserContact和UserGroup作爲DTO。我可以創建一個保存使用UserContactDAOImpl的UserContact和UserGroup的新類,並且這是一種更好的方法嗎? – satyanarayana

+0

請參閱我的更新。 – henginy

相關問題