2013-03-08 50 views
1

我想要使用一個業務對象(TO)進行操作。然而,數據這包括來自2個不同的數據源:將來自兩個DAO的數據合併爲一個TO

  • 應用程序的數據庫,將通過JPA和一個實體
  • 舊系統的數據進行訪問,這將通過一個WebService
  • 訪問

在這個項目的後期階段,所有的數據將被轉移到應用程序的數據庫。因此,我希望有一個業務對象(TO)來表示所有這些數據。

我的做法是下列之一:

1)擁有的實體DAO和另一DAO的舊系統。然後在這些之上還有另一個DAO,它將創建我想在其他應用程序中使用的業務對象。

2)只有一個DAO,將檢索實體和一些從舊系統中的一些數據。

你怎麼看這個想法?

回答

2

您需要在Dao's(實體,舊系統)之上引入服務層,並將所有Dao's注入(假設您使用的是Spring)到服務中。選項1更好,但只需在服務中創建兩個Dao並創建將在整個應用程序中使用的業務傳輸對象。 工作流將是UI - > PersonService - > Dao1(應用程序數據庫),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不會解決。

+0

不幸的是,Spring不會被使用。 – moviaa 2013-03-08 19:49:54

+0

已經更新我的回答上面 – 2013-03-08 19:56:39

+0

好的,所以我會在我的數據訪問層(DAO:s)之上有一個服務層?如果我有一個PersonEntity和一個PersonEntityDAO(用於應用程序的數據)和一個PersonOldSystemDAO,那麼如果不是DAO,頂部的對象應該被調用嗎? – moviaa 2013-03-08 19:56:58

0

漂亮很難回答,如果沒有數據的想法。 我會做的就是有兩個DAO的:一個是DB和一個用於web服務(我會稱之爲更比一個DAO服務),並使用後者屬性添加到實體通過JPA DAO檢索。 我稍後將放棄webservice的服務/ dao並發展JPA dao。

以及由對方回答說,你需要這個抽象通過論文DAO的從服務。 因此,您的第一個解決方案對我來說聽起來更好。

相關問題