2013-10-17 93 views
3

我正在設計JSF中的一些「塊」數據和 我從每個塊的Java bean中獲取數據。 我的問題是我的塊從多個表中獲取他們的數據。 例如:一個表DAO vs多表DAO

一個描述客戶的個人數據塊包括:

  • 顧客名(在表客戶
  • 顧客姓(在表客戶
  • 客戶電話(在表客戶
  • 客戶地址(在表地址
  • 客戶的公司(表公司
  • 客戶的電話在工作(見表公司

我將不得不訪問3個單獨的表格以填充此塊。而不是構建3個不同的DAO(每個表一個),構建一個DAO塊是不是更好?我明白這種方式在一致性方面有缺點,因爲如果一個表將被多個DAO訪問,那麼每個表的更改都必須應用於每個表。但根據我的具體業務邏輯,我的代碼將更容易理解。這裏還有什麼缺點?通常建議創建可訪問多個表的DAO?

回答

5

我對這個問題的解決方案是在CustomerDAO中實現一個叫做getCustomerWithAddressAndCompanyInfo(或其他更短的)的新方法。此方法運行單個查詢加入客戶,地址公司表並通過單一訪問數據庫返回結果。

如果您選擇訪問3個DAO,則必須對數據庫執行3個不同的查詢,這可能會導致性能問題。正如你所說,這也可能導致不一致。

另一種方法可能是在類似CustomerQueries的單獨類中收集這樣複雜的查詢方法,而不是在現有的DAO類中實現它們。

+0

可以請你提供任何文檔或博客或任何關於此。我想要實現一個DAO而不是多個。我知道這會非常複雜,但我必須使用一次。謝謝 –