将两个DAO中的数据合并到一个TO中



我有一种情况,我想使用一个业务对象(to)。然而,这个TO包含的数据来自两个不同的数据源:

  • 应用程序的数据库,将通过JPA和一个实体访问
  • 旧系统的数据,将通过Webservice
  • 访问

在这个项目的后期阶段,所有的数据都将被移动到应用程序的数据库中。因此,我想用一个业务对象(to)来表示所有这些数据。

我的方法是:

1)实体有一个DAO,旧系统有另一个DAO。然后在这些DAO之上还有另一个DAO,它将创建我想在应用程序的其余部分中使用的业务对象。

2)只有一个DAO将从实体中检索一些数据,从旧系统中检索一些数据。

你对此有什么看法?

你需要在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无法解决的问题。

如果不了解数据,很难回答这个问题。我要做的是有两个dao:一个用于数据库,一个用于web服务(我更愿意称其为服务而不是dao),并使用后者向JPA dao检索的实体添加属性。之后我将删除webservice的service/dao,并改进JPA dao。

正如另一个答案所述,您需要通过使用来自服务的这些dao来抽象它。因此,你的第一个解决方案听起来更好。

相关内容

最新更新