【发布时间】:2014-12-09 13:57:56
【问题描述】:
我已经阅读了这里的几乎所有问题以及 www 中的许多相关论点,但我仍然不确定是否能很好地理解这一点,并且可能我错过了对其他人来说显而易见的东西,因为我认为很常见的情况...
请原谅我糟糕的英语和混淆的术语,但我对 DAO 与存储库的差异/优势/警告并不感兴趣,我认为这不会改变问题的“核心”,但也许我错了。
显然这个例子太简单了,每个解决方案都很容易矫枉过正,但请将此视为一个更大系统的“案例”。
假设您必须构建一个应用程序来建议销售人员致电。
每个潜在客户都有一些“文本”数据(即姓名、性别、出生日期、地址、电话号码、电子邮件等)、一张照片以及他/她与其他人和供应商互动的一些历史记录。
文本数据存储在 Mysql 表(人)上,照片位于文件系统中的某个位置,并且某人已经发布了服务,该服务返回一个可能有兴趣联系的人的列表,给定推销员和每个潜在买家的分数。
我可能会得到以下结果:
域对象人员,具有姓名、电话号码、地址、电子邮件和照片。所有属性的 Setter 和 getter 以及 getScore() 方法。
两个DAO,一个用于mysql表,一个用于文件系统。
一项服务,用于获取给定推销员(应用程序的用户,不在本示例范围内)的潜在客户列表。
我不清楚的地方:
Domain Object中的getScore()方法可以直接调用服务层的服务吗?如果不是,为什么?
对于来自不同 DAO 的数据,我是否需要单独的 DTO?
如果是这样,我需要某种管理器或“超级”DAO,它拥有有关如何组装这两条信息的逻辑(即从 mysql DAO 获取 URI、检索文件、加载图片)?这应该驻留在数据层还是服务层? (在我看来应该留在数据层,只要它处理的是数据存储)。
管理器或“超级 DAO”的输出应该是另一个 DTO 还是可以直接是域对象?
如果是 DTO,我是否需要一个服务来调用管理器/超级 DAO 并建立域对象(在这种情况下,我假设该服务会将分数“添加”到域对象)。
这是一个清晰的问题,我知道,但我无法弄清楚如何设计解决方案。
【问题讨论】:
标签: java jpa dao domain-object