我在使用Hibernate的數據庫項目的兩種設計之間猶豫。關於使用休眠時的數據對象和DAO設計
設計#1。 (1)創建一個通用數據提供者接口,其中包括一組DAO接口和一般數據容器類。它隱藏了下面的實現。數據提供者實現可以訪問數據庫中的數據,XML文件,服務或其他內容。數據提供者的用戶不知道它。
(2)用Hibernate創建一個數據庫庫。這個庫實現了(1)中的數據提供者接口。
設計#1的壞處是爲了隱藏實現細節,我需要創建兩組數據容器類。一個在通用數據提供者接口中 - 我們稱它們爲DPI對象,另一組用於數據庫庫中,專用於Hibernate中的實體/屬性映射 - 我們稱之爲H對象。在DAO實現中,我需要從數據庫讀取數據以創建H對象(通過Hibernate),然後將H對象轉換爲DPI對象。
設計#2。
請勿創建通用數據提供者接口。將H對象直接公開給使用數據庫庫的組件。所以數據庫庫的用戶需要了解Hibernate。
我更喜歡design#1,但我不想創建兩組數據容器類。這是從使用基於數據庫的數據提供者的用戶中隱藏H-Objects和其他Hibernate實現細節的正確方法嗎?
設計#2是否有任何缺點?我不會在未來實現其他數據提供者,所以我應該忘記數據提供者接口並使用Design#2?
您對此有何看法?謝謝你的時間!
謝謝你的答案,戴夫。這似乎是最廣泛採用的方法。正如我在答覆John的回答時所說的,這種方法的一些問題讓我感到困擾。無論如何,我想我會在尋找完美解決方案時使用它。 :) – evergreen 2010-04-12 19:50:35