2014-05-21 62 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

相关问题