2011-04-25 115 views
1

請糾正我,如果我錯了:數據映射設計模式和網關 - 新手問題

如果我們使用DAO/VO模式或TDG模式,我們將有一個漂亮的代碼組織,由具有每個(或者至少對於很多)表格是一個相關的類。

這種方法的問題是數據不在給定表內關閉。我們有一些域專用數據,如findDogBreed();findBookBestSellerAuthor();和上述模式似乎並沒有處理這很好。

一旦解決方案是使用映射器。映射器將包含一組與一個表相關的方法和屬性,但它們不會僅僅關閉到該表,也不會與特定的SQL模式相關。

問題是,如果我們開始抽象所有這些東西,我們將無法訪問SQL語法。如果我們需要我們的數據庫管理員來處理它呢?而在更復雜的查詢中,使用映射器可能會導致非常混亂的抽象「事物」。

這是正確的嗎?如果是這樣,我想知道我們在這裏找到一箇中期術語的路徑。

+0

我需要知道,至少如果我沒有得到答案的事實是由於以下事實:a)這個問題沒有意義。 b)沒有中期這樣的想法。 :) plz ...:D – MEM 2011-04-25 20:30:56

+0

請舉一個當前體系結構的例子。具體涉及findDogBreed()方法引發的問題;或findBookBestSellerAuthor();. – GordyD 2011-05-05 08:59:39

回答

1

即使在抽象層次抽象時,您也不必失去在抽象功能時手動編寫SQL的選項。

E.g.請看Doctrine,它是PHP的Hibernate啓發式ORM。它允許您用DQL(Doctrine Query Language)編寫查詢,並轉換爲SQL並自動映射您的實體,但您也可以編寫native SQL(通常用於性能優化),但您需要自行定義結果映射。