2011-06-03 96 views
0

我想在我的多個Web應用程序項目中使用DAO模式。我有三個不同的Web應用程序,它們共享兩個不同的數據庫。每個數據庫都有多個表。使用DAO模式

現在我想知道如何通過使用最佳實踐來使我的程序模塊化。我想製作:

  • DAO項目,每個數據庫有兩個工廠類,每個表的DAO接口和每個表的DTO。
  • 然後,在每個Web應用程序項目中,我打算編寫用於DAO接口和必要的實用程序類的實現代碼,以獲取和關閉連接。

這種方法好嗎?我遇到的疑問是使用這種設計,如果我要發佈任何一個項目,我也要發佈DAO項目,但是這將包含有關其他數據庫的不必要信息。

或者在網絡應用程序本身中添加所有必需的DAO會很好嗎?如果是這樣,那麼我必須爲每個Web應用程序編寫相同的DAO代碼。

希望任何人都可以使用DAO模式爲此數據庫連接提供清晰的路徑。

回答

1

總的來說,你是通過分離你的擔憂來找到正確的方向。

您提到依賴於這兩個數據庫的多個Web應用程序。每個Web應用程序都依賴於兩個數據庫嗎?如果是這樣,我會考慮創建一個DAO項目來封裝所有的數據訪問邏輯。

如果它更多的是混合搭配(網頁應用程序使用數據庫a,網絡應用程序b使用數據庫b,網絡應用程序c使用a和b),我會考慮有兩個DAO項目,每個數據庫一個,除非很多組合的邏輯 - 也就是說,當一個應用程序同時使用兩個數據庫時,它正在進行它們之間的連接[是的,我有這樣做的項目]。

我還建議查看諸如Hibernate之類的對象/關係映射(ORM)框架和/或依賴注入框架(如Spring),這可以幫助簡化分離各個項目並將它們一起使用的過程。

您明確地計劃了一個非常雄心勃勃的項目,因此利用現有的框架來最大限度地減少重新創建輪子將讓您專注於您的具體問題領域。

0
  • 使用JPA訪問數據庫。如果不能再使用的JdbcTemplate(春季)
  • 的EntityManager(JPA)是一種一個DAO的
  • DAO只有當它使
  • 使用連接池/數據源
  • 感(使用一個EntityManager如複雜的,可重複使用的邏輯)
  • DTO如果你的對象需要離開JVM通常只需要(如遠程EJB服務,Web服務,...)
  • 使用EJB的容器管理事務
  • 考慮網關模式(有狀態會話bean和一個擴展的持久化上下文,請參閱「真實世界的Java EE模式 - 反思ing最佳實踐「由亞當Bien),並只返回附屬實體。