我想要使用一个业务对象(TO)。但是,此TO包含的数据来自2个不同的数据源:
在此项目的后续阶段,所有数据都将移动到应用程序的数据库中。因此,我希望有一个业务对象(TO)来表示所有这些数据。
我的方法是以下之一:
1)为实体提供DAO,为旧系统提供另一个DAO。然后是另外一个DAO,它们将创建我想在其余应用程序中使用的业务对象。
2)只有一个DAO将从实体中检索一些数据,而一些DAO将从旧系统中检索。
您对此有何看法?
答案 0 :(得分:2)
您需要在Dao's
(实体,旧系统)之上引入服务层,并将所有Spring
注入(假设您使用Dao's
)到服务中。选项1更好,但只需在服务中创建两个Dao,并创建将在整个应用程序中使用的业务转移对象。
工作流程将是UI - > PersonService - > Dao1(app db),Dao2(Webservice)。 PersonService将具有必要的业务逻辑(如果有)。此外,您可以在PersonService中创建PersonDaoFactory,以抽象Dao在Service层内的创建。因此,最后我们将从控制器或UI层获得类似下面的内容(假设场景,因为我不知道域模型):
Person person = personService.findUserById(personId);
Product product = person.getProducts();
Comment comment = person.getComments();
Friends friends = person.getFriends();
另外,想想许多DAO解决的问题和一个大DAO无法解决的问题。
答案 1 :(得分:0)
如果不了解数据,很难回答这个问题。 我要做的是有两个dao:一个用于db,一个用于webservice(我将其称为服务而不是dao)并使用后者为JPA dao检索的实体添加属性。 我稍后会删除webservice的service / dao并演变JPA dao。
正如另一个答案所述,你需要通过使用服务中的这些来抽象它。 因此,你的第一个解决方案对我来说听起来更好。